⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selection.js

📁 基于Php和Mysql的项目管理软件
💻 JS
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.require("dojo.html.common");dojo.provide("dojo.html.selection");dojo.require("dojo.dom");dojo.require("dojo.lang.common");/** * type of selection**/dojo.html.selectionType = {	NONE : 0, //selection is empty	TEXT : 1, //selection contains text (may also contains CONTROL objects)	CONTROL : 2 //only one element is selected (such as img, table etc)};dojo.html.clearSelection = function(){	// summary: deselect the current selection to make it empty	var _window = dojo.global();	var _document = dojo.doc();	try{		if(_window["getSelection"]){ 			if(dojo.render.html.safari){				// pulled from WebCore/ecma/kjs_window.cpp, line 2536				_window.getSelection().collapse();			}else{				_window.getSelection().removeAllRanges();			}		}else if(_document.selection){			if(_document.selection.empty){				_document.selection.empty();			}else if(_document.selection.clear){				_document.selection.clear();			}		}		return true;	}catch(e){		dojo.debug(e);		return false;	}}dojo.html.disableSelection = function(/*DomNode*/element){	// summary: disable selection on a node	element = dojo.byId(element)||dojo.body();	var h = dojo.render.html;		if(h.mozilla){		element.style.MozUserSelect = "none";	}else if(h.safari){		element.style.KhtmlUserSelect = "none"; 	}else if(h.ie){		element.unselectable = "on";	}else{		return false;	}	return true;}dojo.html.enableSelection = function(/*DomNode*/element){	// summary: enable selection on a node	element = dojo.byId(element)||dojo.body();		var h = dojo.render.html;	if(h.mozilla){ 		element.style.MozUserSelect = ""; 	}else if(h.safari){		element.style.KhtmlUserSelect = "";	}else if(h.ie){		element.unselectable = "off";	}else{		return false;	}	return true;}dojo.html.selectElement = function(/*DomNode*/element){	dojo.deprecated("dojo.html.selectElement", "replaced by dojo.html.selection.selectElementChildren", 0.5);}dojo.html.selectInputText = function(/*DomNode*/element){	// summary: select all the text in an input element	var _window = dojo.global();	var _document = dojo.doc();	element = dojo.byId(element);	if(_document["selection"] && dojo.body()["createTextRange"]){ // IE		var range = element.createTextRange();		range.moveStart("character", 0);		range.moveEnd("character", element.value.length);		range.select();	}else if(_window["getSelection"]){		var selection = _window.getSelection();		// FIXME: does this work on Safari?		element.setSelectionRange(0, element.value.length);	}	element.focus();}dojo.html.isSelectionCollapsed = function(){	dojo.deprecated("dojo.html.isSelectionCollapsed", "replaced by dojo.html.selection.isCollapsed", 0.5);	return dojo.html.selection.isCollapsed();}dojo.lang.mixin(dojo.html.selection, {	getType: function() {		// summary: Get the selection type (like document.select.type in IE).		if(dojo.doc()["selection"]){ //IE			return dojo.html.selectionType[dojo.doc().selection.type.toUpperCase()];		}else{			var stype = dojo.html.selectionType.TEXT;				// Check if the actual selection is a CONTROL (IMG, TABLE, HR, etc...).			var oSel;			try {oSel = dojo.global().getSelection();}			catch (e) {}						if(oSel && oSel.rangeCount==1){				var oRange = oSel.getRangeAt(0);				if (oRange.startContainer == oRange.endContainer && (oRange.endOffset - oRange.startOffset) == 1					&& oRange.startContainer.nodeType != dojo.dom.TEXT_NODE) {					stype = dojo.html.selectionType.CONTROL;				}			}			return stype;		}	},	isCollapsed: function() {		// summary: return whether the current selection is empty		var _window = dojo.global();		var _document = dojo.doc();		if(_document["selection"]){ // IE			return _document.selection.createRange().text == "";		}else if(_window["getSelection"]){			var selection = _window.getSelection();			if(dojo.lang.isString(selection)){ // Safari				return selection == "";			}else{ // Mozilla/W3				return selection.isCollapsed || selection.toString() == "";			}		}	},	getSelectedElement: function() {		// summary: 		//		Retrieves the selected element (if any), just in the case that a single		//		element (object like and image or a table) is selected.		if ( dojo.html.selection.getType() == dojo.html.selectionType.CONTROL ){			if(dojo.doc()["selection"]){ //IE				var range = dojo.doc().selection.createRange();						if ( range && range.item ){					return dojo.doc().selection.createRange().item(0);				}			}else{				var selection = dojo.global().getSelection();				return selection.anchorNode.childNodes[ selection.anchorOffset ];			}		}	},	getParentElement: function() {		// summary: 		//		Get the parent element of the current selection		if(dojo.html.selection.getType() == dojo.html.selectionType.CONTROL){			var p = dojo.html.selection.getSelectedElement();			if(p){ return p.parentNode; }		}else{			if(dojo.doc()["selection"]){ //IE				return dojo.doc().selection.createRange().parentElement();			}else{				var selection = dojo.global().getSelection();				if(selection){					var node = selection.anchorNode;							while ( node && node.nodeType != dojo.dom.ELEMENT_NODE ){						node = node.parentNode;					}							return node;				}			}		}	},	getSelectedText: function(){		// summary:		//		Return the text (no html tags) included in the current selection or null if no text is selected		if(dojo.doc()["selection"]){ //IE			if(dojo.html.selection.getType() == dojo.html.selectionType.CONTROL){				return null;			}			return dojo.doc().selection.createRange().text;		}else{			var selection = dojo.global().getSelection();			if(selection){				return selection.toString();			}		}	},	getSelectedHtml: function(){		// summary:		//		Return the html of the current selection or null if unavailable		if(dojo.doc()["selection"]){ //IE			if(dojo.html.selection.getType() == dojo.html.selectionType.CONTROL){				return null;			}			return dojo.doc().selection.createRange().htmlText;		}else{			var selection = dojo.global().getSelection();			if(selection && selection.rangeCount){				var frag = selection.getRangeAt(0).cloneContents();				var div = document.createElement("div");				div.appendChild(frag);				return div.innerHTML;			}			return null;		}	},	hasAncestorElement: function(/*String*/tagName /* ... */){		// summary: 		// 		Check whether current selection has a  parent element which is of type tagName (or one of the other specified tagName)		return (dojo.html.selection.getAncestorElement.apply(this, arguments) != null);	},	getAncestorElement: function(/*String*/tagName /* ... */){		// summary:		//		Return the parent element of the current selection which is of type tagName (or one of the other specified tagName)		var node = dojo.html.selection.getSelectedElement() || dojo.html.selection.getParentElement();		while(node /*&& node.tagName.toLowerCase() != 'body'*/){			if(dojo.html.selection.isTag(node, arguments).length>0){				return node;			}			node = node.parentNode;		}		return null;	},	//modified from dojo.html.isTag to take an array as second parameter	isTag: function(/*DomNode*/node, /*Array*/tags) {		if(node && node.tagName) {			for (var i=0; i<tags.length; i++){				if (node.tagName.toLowerCase()==String(tags[i]).toLowerCase()){					return String(tags[i]).toLowerCase();				}			}		}		return "";	},	selectElement: function(/*DomNode*/element) {		// summary: clear previous selection and select element (including all its children)		var _window = dojo.global();		var _document = dojo.doc();		element = dojo.byId(element);		if(_document.selection && dojo.body().createTextRange){ // IE			try{				var range = dojo.body().createControlRange();				range.addElement(element);				range.select();			}catch(e){				dojo.html.selection.selectElementChildren(element);			}		}else if(_window["getSelection"]){			var selection = _window.getSelection();			// FIXME: does this work on Safari?			if(selection["removeAllRanges"]){ // Mozilla				var range = _document.createRange() ;				range.selectNode(element) ;				selection.removeAllRanges() ;				selection.addRange(range) ;			}		}	},	selectElementChildren: function(/*DomNode*/element){		// summary: clear previous selection and select the content of the node (excluding the node itself)		var _window = dojo.global();		var _document = dojo.doc();		element = dojo.byId(element);		if(_document.selection && dojo.body().createTextRange){ // IE			var range = dojo.body().createTextRange();			range.moveToElementText(element);			range.select();		}else if(_window["getSelection"]){			var selection = _window.getSelection();			if(selection["setBaseAndExtent"]){ // Safari				selection.setBaseAndExtent(element, 0, element, element.innerText.length - 1);			} else if(selection["selectAllChildren"]){ // Mozilla				selection.selectAllChildren(element);			}		}	},	getBookmark: function(){		// summary: Retrieves a bookmark that can be used with moveToBookmark to return to the same range		var bookmark;		var _document = dojo.doc();		if(_document["selection"]){ // IE			var range = _document.selection.createRange();			bookmark = range.getBookmark();		}else{			var selection;			try {selection = dojo.global().getSelection();}			catch (e) {}			if(selection){				var range = selection.getRangeAt(0);				bookmark = range.cloneRange();			}else{				dojo.debug("No idea how to store the current selection for this browser!");			}		}		return bookmark;	},	moveToBookmark: function(/*Object*/bookmark){		// summary: Moves current selection to a bookmark		// bookmark: this should be a returned object from dojo.html.selection.getBookmark()		var _document = dojo.doc();		if(_document["selection"]){ // IE			var range = _document.selection.createRange();			 range.moveToBookmark(bookmark);			 range.select();		}else{ //Moz/W3C			var selection;			try {selection = dojo.global().getSelection();}			catch (e) {}			if(selection && selection['removeAllRanges']){				selection.removeAllRanges() ;				selection.addRange(bookmark) ;			}else{				dojo.debug("No idea how to restore selection for this browser!");			}		}	},	collapse: function(/*Boolean*/beginning) {		// summary: clear current selection		if(dojo.global()['getSelection']){			var selection = dojo.global().getSelection();			if(selection.removeAllRanges){ // Mozilla				if(beginning){					selection.collapseToStart();				}else{					selection.collapseToEnd();				}			}else{ // Safari				// pulled from WebCore/ecma/kjs_window.cpp, line 2536				 dojo.global().getSelection().collapse(beginning);			}		}else if(dojo.doc().selection){ // IE			var range = dojo.doc().selection.createRange();			range.collapse(beginning);			range.select();		}	},	remove: function() {		// summary: delete current selection		if(dojo.doc().selection) { //IE			var selection = dojo.doc().selection;			if ( selection.type.toUpperCase() != "NONE" ){				selection.clear();			}					return selection;		}else{			var selection = dojo.global().getSelection();			for ( var i = 0; i < selection.rangeCount; i++ ){				selection.getRangeAt(i).deleteContents();			}					return selection;		}	}});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -