亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fckdomrange_ie.js

?? 這個寫的就更好了
?? JS
字號:
?/*
 * FCKeditor - The text editor for Internet - http://www.fckeditor.net
 * Copyright (C) 2003-2008 Frederico Caldeira Knabben
 *
 * == BEGIN LICENSE ==
 *
 * Licensed under the terms of any of the following licenses at your
 * choice:
 *
 *  - GNU General Public License Version 2 or later (the "GPL")
 *    http://www.gnu.org/licenses/gpl.html
 *
 *  - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
 *    http://www.gnu.org/licenses/lgpl.html
 *
 *  - Mozilla Public License Version 1.1 or later (the "MPL")
 *    http://www.mozilla.org/MPL/MPL-1.1.html
 *
 * == END LICENSE ==
 *
 * Class for working with a selection range, much like the W3C DOM Range, but
 * it is not intended to be an implementation of the W3C interface.
 * (IE Implementation)
 */

FCKDomRange.prototype.MoveToSelection = function()
{
	this.Release( true ) ;

	this._Range = new FCKW3CRange( this.Window.document ) ;

	var oSel = this.Window.document.selection ;

	if ( oSel.type != 'Control' )
	{
		var eMarkerStart	= this._GetSelectionMarkerTag( true ) ;
		var eMarkerEnd		= this._GetSelectionMarkerTag( false ) ;

		if ( !eMarkerStart && !eMarkerEnd )
		{
			this._Range.setStart( this.Window.document.body, 0 ) ;
			this._UpdateElementInfo() ;
			return ;
		}

		// Set the start boundary.
		this._Range.setStart( eMarkerStart.parentNode, FCKDomTools.GetIndexOf( eMarkerStart ) ) ;
		eMarkerStart.parentNode.removeChild( eMarkerStart ) ;

		// Set the end boundary.
		this._Range.setEnd( eMarkerEnd.parentNode, FCKDomTools.GetIndexOf( eMarkerEnd ) ) ;
		eMarkerEnd.parentNode.removeChild( eMarkerEnd ) ;

		this._UpdateElementInfo() ;
	}
	else
	{
		var oControl = oSel.createRange().item(0) ;

		if ( oControl )
		{
			this._Range.setStartBefore( oControl ) ;
			this._Range.setEndAfter( oControl ) ;
			this._UpdateElementInfo() ;
		}
	}
}

FCKDomRange.prototype.Select = function( forceExpand )
{
	if ( this._Range )
		this.SelectBookmark( this.CreateBookmark( true ), forceExpand ) ;
}

// Not compatible with bookmark created with CreateBookmark2.
// The bookmark nodes will be deleted from the document.
FCKDomRange.prototype.SelectBookmark = function( bookmark, forceExpand )
{
	var bIsCollapsed = this.CheckIsCollapsed() ;
	var bIsStartMakerAlone ;
	var dummySpan ;

	// Create marker tags for the start and end boundaries.
	var eStartMarker = this.GetBookmarkNode( bookmark, true ) ;

	if ( !eStartMarker )
		return ;

	var eEndMarker ;
	if ( !bIsCollapsed )
		eEndMarker = this.GetBookmarkNode( bookmark, false ) ;

	// Create the main range which will be used for the selection.
	var oIERange = this.Window.document.body.createTextRange() ;

	// Position the range at the start boundary.
	oIERange.moveToElementText( eStartMarker ) ;
	oIERange.moveStart( 'character', 1 ) ;

	if ( eEndMarker )
	{
		// Create a tool range for the end.
		var oIERangeEnd = this.Window.document.body.createTextRange() ;

		// Position the tool range at the end.
		oIERangeEnd.moveToElementText( eEndMarker ) ;

		// Move the end boundary of the main range to match the tool range.
		oIERange.setEndPoint( 'EndToEnd', oIERangeEnd ) ;
		oIERange.moveEnd( 'character', -1 ) ;
	}
	else
	{
		bIsStartMakerAlone = ( forceExpand || !eStartMarker.previousSibling || eStartMarker.previousSibling.nodeName.toLowerCase() == 'br' ) && !eStartMarker.nextSibing ;

		// Append a temporary <span>&#65279;</span> before the selection.
		// This is needed to avoid IE destroying selections inside empty
		// inline elements, like <b></b> (#253).
		// It is also needed when placing the selection right after an inline
		// element to avoid the selection moving inside of it.
		dummySpan = this.Window.document.createElement( 'span' ) ;
		dummySpan.innerHTML = '&#65279;' ;	// Zero Width No-Break Space (U+FEFF). See #1359.
		eStartMarker.parentNode.insertBefore( dummySpan, eStartMarker ) ;

		if ( bIsStartMakerAlone )
		{
			// To expand empty blocks or line spaces after <br>, we need
			// instead to have any char, which will be later deleted using the
			// selection.
			// \ufeff = Zero Width No-Break Space (U+FEFF). See #1359.
			eStartMarker.parentNode.insertBefore( this.Window.document.createTextNode( '\ufeff' ), eStartMarker ) ;
		}
	}

	if ( !this._Range )
		this._Range = this.CreateRange() ;

	// Remove the markers (reset the position, because of the changes in the DOM tree).
	this._Range.setStartBefore( eStartMarker ) ;
	eStartMarker.parentNode.removeChild( eStartMarker ) ;

	if ( bIsCollapsed )
	{
		if ( bIsStartMakerAlone )
		{
			// Move the selection start to include the temporary &#65279;.
			oIERange.moveStart( 'character', -1 ) ;

			oIERange.select() ;

			// Remove our temporary stuff.
			this.Window.document.selection.clear() ;
		}
		else
			oIERange.select() ;

		FCKDomTools.RemoveNode( dummySpan ) ;
	}
	else
	{
		this._Range.setEndBefore( eEndMarker ) ;
		eEndMarker.parentNode.removeChild( eEndMarker ) ;
		oIERange.select() ;
	}
}

FCKDomRange.prototype._GetSelectionMarkerTag = function( toStart )
{
	var doc = this.Window.document ;
	var selection = doc.selection ;

	// Get a range for the start boundary.
	var oRange ;

	// IE may throw an "unspecified error" on some cases (it happened when
	// loading _samples/default.html), so try/catch.
	try
	{
		oRange = selection.createRange() ;
	}
	catch (e)
	{
		return null ;
	}

	// IE might take the range object to the main window instead of inside the editor iframe window.
	// This is known to happen when the editor window has not been selected before (See #933).
	// We need to avoid that.
	if ( oRange.parentElement().document != doc )
		return null ;

	oRange.collapse( toStart === true ) ;

	// Paste a marker element at the collapsed range and get it from the DOM.
	var sMarkerId = 'fck_dom_range_temp_' + (new Date()).valueOf() + '_' + Math.floor(Math.random()*1000) ;
	oRange.pasteHTML( '<span id="' + sMarkerId + '"></span>' ) ;

	return doc.getElementById( sMarkerId ) ;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品欧美精品| 国产精品嫩草99a| 成人精品一区二区三区中文字幕 | 精品国精品自拍自在线| 99久久精品免费| 另类的小说在线视频另类成人小视频在线| 中国色在线观看另类| 制服丝袜亚洲播放| 日本道免费精品一区二区三区| 国产一区二区三区高清播放| 日韩在线卡一卡二| 亚洲线精品一区二区三区| 国产精品初高中害羞小美女文| 久久综合色婷婷| 56国语精品自产拍在线观看| 欧日韩精品视频| 色哟哟一区二区| 成人v精品蜜桃久久一区| 韩国精品主播一区二区在线观看 | 激情综合色综合久久| 亚洲第一主播视频| 亚洲乱码国产乱码精品精98午夜| 久久久国际精品| 日韩美一区二区三区| 91精品国产麻豆国产自产在线 | 国产一区在线观看视频| 蜜臀99久久精品久久久久久软件| 亚洲高清视频的网址| 亚洲成人自拍网| 无码av免费一区二区三区试看| 亚洲午夜一区二区三区| 一区二区三区在线视频观看58| 自拍偷拍国产亚洲| 国产精品久久久久久久岛一牛影视| 国产欧美日韩另类一区| 久久九九久久九九| 中文字幕欧美日韩一区| 欧美国产在线观看| 国产精品超碰97尤物18| 亚洲三级在线播放| 亚洲激情中文1区| 亚洲高清视频在线| 奇米四色…亚洲| 老司机精品视频线观看86| 极品美女销魂一区二区三区免费| 国模大尺度一区二区三区| 国产一区二区三区不卡在线观看| 国产精品亚洲成人| caoporm超碰国产精品| 97se亚洲国产综合自在线观| 一本在线高清不卡dvd| 欧美日韩久久一区二区| 91精品国产综合久久福利| 欧美mv日韩mv| 国产日产精品一区| 1000精品久久久久久久久| 亚洲精品成a人| 日本伊人午夜精品| 国产在线不卡一区| 不卡的电视剧免费网站有什么| 91麻豆免费视频| 欧美日韩国产系列| 精品奇米国产一区二区三区| 国产女人18毛片水真多成人如厕 | 国产精品久久99| 夜夜嗨av一区二区三区中文字幕 | 香蕉影视欧美成人| 亚洲另类在线一区| 亚瑟在线精品视频| 国内精品在线播放| 99精品久久久久久| 免费三级欧美电影| 成人动漫一区二区三区| 色88888久久久久久影院野外| 欧美高清hd18日本| 国产亚洲欧美日韩日本| 亚洲激情一二三区| 韩日精品视频一区| 在线观看一区二区精品视频| 亚洲精品一区二区三区蜜桃下载| 亚洲色图都市小说| 极品少妇一区二区三区精品视频| 97久久精品人人做人人爽50路| 欧美精品粉嫩高潮一区二区| 欧美激情艳妇裸体舞| 日韩av电影天堂| 99亚偷拍自图区亚洲| 91精品国产福利在线观看| 国产精品久久久久久一区二区三区| 五月天精品一区二区三区| 成人av第一页| 精品国产乱码久久久久久图片| 亚洲视频在线观看一区| 黄一区二区三区| 在线视频国内一区二区| 国产欧美日韩三区| 久久精品国产成人一区二区三区 | 欧美日韩国产在线播放网站| 国产精品三级视频| 免费在线观看日韩欧美| 色婷婷av一区二区三区大白胸| 久久精品这里都是精品| 首页国产欧美久久| 色综合久久久久综合体桃花网| 国产亚洲成aⅴ人片在线观看| 亚洲成人精品一区| 91免费视频网址| 国产精品伦理一区二区| 久久99精品国产.久久久久久| 欧美视频一区在线| 亚洲天堂网中文字| 成人晚上爱看视频| 久久在线观看免费| 久久精品国产在热久久| 91精品在线一区二区| 亚洲国产精品一区二区尤物区| 91偷拍与自偷拍精品| 国产精品三级av| 成人深夜视频在线观看| 久久久蜜臀国产一区二区| 激情国产一区二区| 欧美mv和日韩mv的网站| 免费看日韩精品| 日韩一区二区三区视频在线观看| 亚洲丰满少妇videoshd| 欧美少妇bbb| 亚洲午夜一区二区| 欧美日韩大陆一区二区| 亚洲va天堂va国产va久| 欧美日韩一区二区三区视频| 亚洲国产aⅴ成人精品无吗| 欧美日韩中字一区| 婷婷国产v国产偷v亚洲高清| 欧美久久久久久久久| 日韩av不卡在线观看| 日韩欧美国产精品| 经典三级一区二区| 中文字幕乱码日本亚洲一区二区| 国产精品一区二区久激情瑜伽| 久久蜜桃一区二区| 国产一区不卡视频| 国产精品私人影院| 99久久精品国产精品久久| 亚洲欧美日韩电影| 欧美日韩情趣电影| 蜜臀av性久久久久av蜜臀妖精| 精品粉嫩超白一线天av| 国产成人免费av在线| 国产精品久久久久久久久果冻传媒| 99在线视频精品| 亚洲成人一区二区| 欧美一区二区在线免费观看| 精品一区精品二区高清| 国产精品午夜在线观看| 日本久久精品电影| 丝袜诱惑制服诱惑色一区在线观看 | 欧美日韩国产影片| 久久99精品国产.久久久久| 国产日韩欧美一区二区三区乱码| 北岛玲一区二区三区四区| 亚洲日本韩国一区| 欧美日本国产视频| 国产乱国产乱300精品| 亚洲视频中文字幕| 日韩一区二区三区精品视频| 国产+成+人+亚洲欧洲自线| 亚洲欧美视频在线观看视频| 欧美福利一区二区| 成人一区二区三区视频在线观看 | 欧美aⅴ一区二区三区视频| 久久精品夜色噜噜亚洲aⅴ| 91影院在线观看| 日本va欧美va瓶| 国产精品伦一区| 日韩一区二区免费高清| 成人午夜电影久久影院| 午夜精品视频一区| 国产精品素人一区二区| 欧美日韩国产小视频在线观看| 国产成人免费视| 丝袜诱惑亚洲看片| 亚洲欧洲av一区二区三区久久| 欧美一区二区三区四区视频| 懂色av中文一区二区三区| 亚洲一二三区在线观看| 久久色在线视频| 欧美日韩在线不卡| 成人av电影观看| 韩国精品在线观看| 亚洲影视在线观看| 亚洲国产精品成人综合| 日韩一区二区高清| 在线看不卡av| 成人免费视频免费观看| 青青草国产精品亚洲专区无| 一区二区三区免费网站| 国产欧美日韩一区二区三区在线观看| 91精品免费在线| 色天使色偷偷av一区二区| 国产91高潮流白浆在线麻豆|