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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tagedit.js

?? jakarta-taglibs
?? JS
?? 第 1 頁 / 共 2 頁
字號:
		else { // tag is unlocked
			if(!bodyContent)
				theDOM.documentElement.outerHTML = beforeNode + afterNode;
			else {
				tag.outerHTML = tag.innerHTML
			}
			//tag = null; 
			//theDOM.setSelectedNode(offsets[0],offsets[0]);
			dw.setLiveDataMode(true);
		}
	}
}

/* function: getCurTag()
 * ---------------------
 * Sets the global tag variable to the DOM node of the currently
 * selected tag (which may be any tag, custom or otherwise).
 * UltraDev will raise JavaScript errors if we attempt to convert
 * a pair offsets to a node in many cases, including the following:
 * 1: Current selection begins at the end of the page's <BODY> tag
 *    or ends at the beginning of the </BODY> tag.
 * 2: Current selection is inside the <BODY> tag, but there are no
 *    children of the <BODY> tag.
 * We work around these errors by setting the current tag to
 * null under these cases, so the floater will not be populated.
 * Additionally, if the cursor is immediately before an opening or
 * closing tag, UltraDev reports the current tag as the tag following 
 * the cursor. If we find these cases we also set tag to null, so the
 * floater is not populated with an unselected tag.
 */

function getCurTag() {
	var theDOM = dw.getDocumentDOM();
	var selection = theDOM.getSelection();
	var validOpen;  // to test that selection is not the last offset of the <BODY> tag
	var validClose; // to test that selection is not the first offset of the </BODY> tag
	var selection = theDOM.getSelection(true); // offsets of the current selection
	var selectedNode; // currently selected node
	var tableNode; // dummy node to test if current node is a <TR> or <TD> tag
	var selNodeOffsets; // currently selected node's offsets
	var bodyNode = theDOM.body; // the <BODY> tag
	var bodyChilds = bodyNode.childNodes; // the children of the <BODY> tag

	if (selection[selection.length - 1] + 1 < (theDOM.nodeToOffsets(bodyNode)[0])) {
		selectedNode = theDOM.offsetsToNode(selection[0],selection[0]);
		tag = selectedNode;
	}

	else if (bodyNode.hasChildNodes() && 
		!(selection[0] == selection[selection.length - 1] && 
		bodyChilds[bodyChilds.length - 1].nodeType == Node.TEXT_NODE && 		   // if body's last child is a text node, and selection is
		selection[0] > (theDOM.nodeToOffsets(bodyChilds[bodyChilds.length - 1]))[0]))     // insertion right after the text node, dw raises a js error
	{										       	  		   
		validOpen = theDOM.nodeToOffsets(bodyChilds[0])[0];		       
		validClose = theDOM.nodeToOffsets(bodyChilds[bodyChilds.length - 1])[1];

		if (selection[0] >= validOpen && selection[selection.length - 1] <= validClose && selection[0] + 1 < validClose) {
			selectedNode = theDOM.getSelectedNode();
			selNodeOffsets = theDOM.nodeToOffsets(selectedNode);		
	
			if ((selection[0] == selection[selection.length - 1]) && ((selection[0] == selNodeOffsets[0]) ||  			   // make sure we're not right before an opening tag
				(selectedNode.hasChildNodes() && selection[0] == (selNodeOffsets[1] - (selectedNode.tagName.length + 3))))) {     // make sure we're not right before a closing tag
				tag = null; //current selection is cursor right before an opening or closing tag. Don't select.   
			}
			else {
				tableNode = theDOM.offsetsToNode(selection[0],selection[selection.length - 1]);										
				if (tableNode.tagName == "TR" || tableNode.tagName == "TD" && theDOM.nodeToOffsets(tableNode)[0] < selection[0]) { // dw will give us a <TD> or <TR> tag if a custom tag surrounding		       
					tag = tableNode.parentNode;		       	          						  // one of these is selected, so use the parent tag.
				}
				else {
					tag = theDOM.offsetsToNode(selection[0], selection[0]+1); // set tag to node surrounding current selection
				}
			}
		}
	}
	else tag = null; //populateGrid() will call noCTSelected()
}

/* function: populateGrid()
 * ------------------------
 * Populates the Edit Tag floater with the attribute/value pairs
 * of the currently selected custom tag. First sets "orig" to the 
 * opening tag of the currently selected tag. If current tag is
 * locked, uses the untranslated source by calling unescape().
 * Then calls tagIsCustom to determine if the current tag is a
 * custom tag. If so, populates the floater with the tag's
 * attribute/value pairs.
*/

function populateGrid() {
	var orig; 	 // the tag outerHTML inside a locked tag
	var pairs;	// the array of attribute value pairs to populate the control grid

	if (tag != null && tag.outerHTML != null) { 		
		if (tag.tagName != "MM:BEGINLOCK" && tagIsCustom(tag.outerHTML)) { // see if unlocked tag is custom
			pairs = new Array(attlist.length);
			for (var i = 0; i < attlist.length; i++) {
				var userEntry = tag.getAttribute(attlist[i]);
				if (userEntry == null) userEntry = "";  // can't send null to the control grid
				pairs[i] = new Array(attlist[i],userEntry);
				userEntry = "";
			}
			gc.setContents(pairs);
		}
		else if (tag.tagName == "MM:BEGINLOCK")	{	// see if locked tag is custom
			orig = unescape(tag.getAttribute("ORIG"));
			if (tagIsCustom(orig)) {
				pairs = new Array(attlist.length);
				for (var i = 0; i < attlist.length; i++) {
					var userEntry = getParam(orig,(attlist[i]));
					pairs[i] = new Array(attlist[i],userEntry);
					userEntry = "";
				}
				gc.setContents(pairs);
			}
			else { // no custom tag selected
				noCTSelected();
			}
		}

		else { // no custom tag selected
			noCTSelected();
		}
	}
}


/* function: tagIsCustom(orig)
 * ---------------------------
 * Checks to see if the supplied tag is one of the currently loaded 
 * custom tags. First, calls getLibNameFromPrefix() to see if the
 * prefix of the current tag corresponds to a tag custom tag library.
 * If so, it takes the tag library name and checks if it is in
 * the "taglibs" global associative array. If so, it fills the 
 * attlist (attribute list) and bodyContent variables with the tag's 
 * info and returns true. If not found but name contains a colon (:),
 * reload the taglibs array from the tagLibData file, since the user
 * may have added a new tag library or purged the cache. In all other
 * cases, do nothing and return false.
 */

function tagIsCustom(orig) {
	var token;
	var taginfo = new Array(2); // an array containing exactly the prefix and name of the tag
	var curTagName;
	
	if (taglibs == null) { // refresh memory in case cache was purged
		eval(DWfile.read(TL_DATA_LOC + TL_DATA));
	}

	token = orig.split(" ")[0];
	taginfo = token.substring(1).split(":");
	prefix = taginfo[0];
	tagName = taginfo[1];
	selTaglib = getLibnameFromPrefix(prefix);
	if (selTaglib == null) return false; // there is no namespace instantiation for this prefix

	if(token.indexOf(":") > 0) {	
		if (taglibs[selTaglib] == null) { 
			  // tag not found in memory, but is probably a custom tag
			 // reload taglib file in case user added
			// a taglib or purged cache	

			eval(DWfile.read(TL_DATA_LOC + TL_DATA));
			if (taglibs[selTaglib] == null) { // taglib still not found, so its not custom
				return false;
			}
		}
	}
	else return false; // Has no colon (:) or has no namespace
			  // instantiation. Cannot be a custom tag

	 // We know a namespace instantiation exists for this tag.
        // See if its in the taglibs associative array.
	for (var i = 0; i < taglibs[selTaglib].length; i++) {
		var curTagName = ((taglibs[selTaglib])[i])[0];
		if (curTagName == tagName) {
			attlist = ((taglibs[selTaglib])[i])[3];
			bodyContent = ((taglibs[selTaglib])[i])[1];
			return true;
		}
	}
	return false; // tagLibrary does not exist locally
}

/* function: noCTSelected()
 * ------------------------
 * Called when no custom tag is selected. Checks if the GridControl
 * contents have already been set with the NO_CT message. If not,
 * sets the content to the NO_CT message to so the user knows that
 * no custom tag is selected.
 */

function noCTSelected() {
	var content;
	tagName = selTaglib = prefix = attlist = null;
	if (!((content = (gc.getContents())[0]) != null && (content[0] == NO_CT))) {
		gc.setContents(NO_CT_SELECTED);  //only send message to floater if a custom tag
						//was previously selected
	}
}

/* function: getLibnameFromPrefix
 * ------------------------------
 * Takes the prefix of the currently selected tag, finds the 
 * namespace instantiation at the top of the page with that prefix, 
 * and returns the tag library name based on the name of the TLD file, 
 * or null if no such tag library is found.
 */

function getLibnameFromPrefix(prefix) {
	var theDOM = dw.getDocumentDOM();
	var prefixIndex;
	var childText;
	var tldPath; // the full tldPath as specified in namespace instantiation
	var libname = null; // the name of the actual tag library stored in TLD file

	for (i = 0; i < theDOM.childNodes.length; i++) {
		childText = theDOM.childNodes[i].outerHTML;
		if (childText != null) {
			prefixIndex = childText.indexOf(PREFIX_MATCH + "\"" + prefix + "\"");
			if (prefixIndex != -1) {
				if (childText.indexOf(URI_MATCH) != -1) {
					tldPath = ((((childText.split(URI_MATCH + "\""))[1]).split("\""))[0]); 
					libname = tldPath.substring(tldPath.lastIndexOf("/") + 1,tldPath.lastIndexOf("."));
					// now the name of the current tag library is set to the taglib's prefix
					break;
				}
			}
		}
	}
	return libname;		
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品中文字幕在线不卡尤物 | 99久久久无码国产精品| 久久久蜜臀国产一区二区| 久久99精品国产.久久久久久| 日韩欧美色电影| 国产在线不卡一卡二卡三卡四卡| 2014亚洲片线观看视频免费| 国产精品99久久久久久似苏梦涵| 亚洲国产精品成人综合色在线婷婷 | 欧美一区二区二区| 精久久久久久久久久久| 久久精品欧美一区二区三区麻豆| 丁香桃色午夜亚洲一区二区三区| 国产精品久久久久久久久免费丝袜 | 东方欧美亚洲色图在线| 亚洲精品久久久蜜桃| 欧美日韩1区2区| 国产综合成人久久大片91| 日韩美女啊v在线免费观看| 欧美在线影院一区二区| 美女在线观看视频一区二区| 久久精品视频一区| 色成人在线视频| 久久国产麻豆精品| 亚洲视频1区2区| 91精品在线免费观看| 国产一区二区三区黄视频| 亚洲丝袜自拍清纯另类| 欧美私人免费视频| 国产精品小仙女| 婷婷久久综合九色国产成人| 国产午夜精品久久久久久久| 色哦色哦哦色天天综合| 黑人巨大精品欧美黑白配亚洲| 中文字幕亚洲精品在线观看| 欧美色区777第一页| 国产精品自在在线| 亚洲高清三级视频| 中文字幕色av一区二区三区| 欧美一级爆毛片| 在线亚洲精品福利网址导航| 国产大陆精品国产| 丝袜诱惑亚洲看片| 亚洲免费av高清| 久久久久久久久久电影| 欧美人伦禁忌dvd放荡欲情| www.在线欧美| 国产精品自拍毛片| 日本成人超碰在线观看| 亚洲精品日韩一| 欧美极品aⅴ影院| 日韩欧美视频一区| 欧美精品aⅴ在线视频| 91天堂素人约啪| 成人h动漫精品一区二区| 激情五月激情综合网| 日本视频一区二区| 亚洲成人自拍网| 亚洲免费av在线| 亚洲人妖av一区二区| 久久人人97超碰com| 日韩三级伦理片妻子的秘密按摩| 欧美色图激情小说| 欧美这里有精品| 欧美在线free| 欧美日韩一级片在线观看| 一本久道中文字幕精品亚洲嫩| 成人av资源在线观看| 国产91露脸合集magnet| 国产精品亚洲第一区在线暖暖韩国| 麻豆精品一二三| 久久精品国产澳门| 久88久久88久久久| 久久99国产精品免费| 久久精品国产**网站演员| 日韩av一区二区三区四区| 婷婷综合久久一区二区三区| 亚洲成人一区二区在线观看| 亚洲国产成人porn| 亚洲超碰精品一区二区| 天堂午夜影视日韩欧美一区二区| 亚洲电影视频在线| 偷偷要91色婷婷| 日本视频中文字幕一区二区三区| 日本 国产 欧美色综合| 蜜臀av在线播放一区二区三区| 美女看a上一区| 制服丝袜亚洲色图| 日韩亚洲欧美综合| 欧美精品一区二| 国产精品久久久久久久久图文区| 中文字幕一区av| 亚洲午夜久久久久久久久久久 | 国产美女娇喘av呻吟久久| 国产在线不卡一区| www.日韩在线| 91黄视频在线| 日韩欧美黄色影院| 中文字幕成人av| 一区二区成人在线视频| 天天综合色天天综合色h| 久久精品国内一区二区三区| 国产高清在线观看免费不卡| 91网站在线播放| 日韩一级片在线观看| 日本一区二区三区视频视频| 亚洲激情第一区| 九色porny丨国产精品| 成人av资源在线观看| 欧美欧美午夜aⅴ在线观看| 久久久欧美精品sm网站| 一区二区三区av电影| 久久国产精品一区二区| 成人福利视频网站| 91精品国产91久久综合桃花| 中文无字幕一区二区三区 | 欧美成人一级视频| 国产精品狼人久久影院观看方式| 亚洲一区二区三区国产| 狠狠色丁香久久婷婷综合_中 | 91精品国产一区二区三区香蕉| 国产午夜精品一区二区三区四区| 亚洲国产综合人成综合网站| 国产一区二区久久| 欧美精品v日韩精品v韩国精品v| 国产欧美视频一区二区| 亚洲福利视频一区| aa级大片欧美| 精品国产成人在线影院| 亚洲国产一区二区视频| 成人手机电影网| 欧美v日韩v国产v| 亚洲成av人片| 色综合天天综合在线视频| 精品裸体舞一区二区三区| 一区二区三区电影在线播| 国产精品一二二区| 欧美不卡123| 91久久精品一区二区| 国产亚洲成aⅴ人片在线观看| 午夜久久久影院| 91日韩精品一区| 亚洲国产激情av| 国内欧美视频一区二区| 欧美肥大bbwbbw高潮| 亚洲黄网站在线观看| 成人av资源网站| 中文文精品字幕一区二区| 国内不卡的二区三区中文字幕 | 成人a免费在线看| 国产亚洲欧洲997久久综合| 日韩电影在线观看电影| 欧美久久久久久久久中文字幕| 亚洲精品国产无天堂网2021| 成人国产精品免费观看动漫| 久久久国产一区二区三区四区小说| 麻豆国产欧美一区二区三区| 欧美裸体bbwbbwbbw| 亚洲中国最大av网站| 色8久久人人97超碰香蕉987| 成人欧美一区二区三区黑人麻豆 | 91久久国产最好的精华液| 中日韩av电影| 成人高清免费在线播放| 中文幕一区二区三区久久蜜桃| 国产传媒一区在线| 国产日韩欧美电影| 国产福利91精品一区| 日韩av网站免费在线| 4438x成人网最大色成网站| 天天色图综合网| 日韩欧美中文字幕精品| 欧美aaaaaa午夜精品| 日韩三级视频中文字幕| 蜜桃av噜噜一区| 精品少妇一区二区三区在线视频 | 亚洲v精品v日韩v欧美v专区 | 欧美一级久久久| 国产乱淫av一区二区三区| 国产日韩欧美制服另类| 成人99免费视频| 一区二区三区四区蜜桃| 欧美色男人天堂| 精品一区二区三区久久| 国产女主播一区| 在线精品视频一区二区三四| 亚洲成a人v欧美综合天堂 | 国产偷v国产偷v亚洲高清| 成人av在线影院| 亚洲高清免费视频| 精品国产伦一区二区三区观看方式 | 在线免费观看一区| 日韩在线播放一区二区| 精品国产乱码91久久久久久网站| 成人午夜视频福利| 亚洲一本大道在线| 精品国产不卡一区二区三区| 99精品热视频| 亚洲成av人影院| 国产校园另类小说区|