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

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

?? tagedit.js

?? jakarta-taglibs
?? JS
?? 第 1 頁 / 共 2 頁
字號:
/* ====================================================================
 * 
 * The Apache Software License, Version 1.1
 *
 * Copyright (c) 1999 The Apache Software Foundation.  All rights 
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer. 
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution, if
 *    any, must include the following acknowlegement:  
 *       "This product includes software developed by the 
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowlegement may appear in the software itself,
 *    if and wherever such third-party acknowlegements normally appear.
 *
 * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
 *    Foundation" must not be used to endorse or promote products derived
 *    from this software without prior written permission. For written 
 *    permission, please contact apache@apache.org.
 *
 * 5. Products derived from this software may not be called "Apache"
 *    nor may "Apache" appear in their names without prior written
 *    permission of the Apache Group.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 *
 *
 * file: tagEdit.js
 * author: Dan Mandell [dmandell@stanford.edu]
 * -------------------------------------------
 * The JavaScript implementation of the tagEdit.html floater.
 * Uses the Dreamweaver GridControl class to display the attribute/
 * value pairs of the currently selected custom tag in the Edit Tag
 * floater. Provides functionality for adding/removing/altering
 * the attribute/value pairs, and removing the currently selected
 * custom tag.
 */

var selTaglib; // the name of the currently selected tag library
var prefix; // the name of the currently selected prefix
var tag;
var gc; // the GridControl (visual interface for floater)
var GC_NAME = "att_grid"; // name of the GridControl
var floater = "tagEdit";
var NO_CT = "No custom tag selected";
var NO_CT_SELECTED = new Array(new Array(NO_CT));
var TL_DATA = "tagLibData.js";
var TL_DATA_LOC = dw.getConfigurationPath() + "/Commands/customTags/";
var PREFIX_MATCH = "prefix=";	 // text used to find the prefix attribute within 
			        // a tag library namespace instantiation

var URI_MATCH = "uri=";		// used to find uri attribute within namespace instantiation
var tagName; // the name of the currently selected custom tag
var attlist; // the attributes of the current custom tag
var bodyContent; //boolean, true if the current tag allows any body content

var content = new Array();
gc = new GridControl(GC_NAME);
populateGrid(); // initialize the GridControl

/* function: isAvailableInCodeView()
 * ---------------------------------
 * Called by UltraDev. Tells UltraDev that the floater should be
 * available when the user is in "Code View" mode.
 */

function isAvailableInCodeView() {
	return true;
}

/* function: selectionChanged()
 * ----------------------------
 * Called by UltraDev whenever the user changes the selection.
 * NOTE: UltraDev does not call selectionChanged() when the selection
 * is outside of the <BODY> tag, unless:
 * 1: The user selects one of the Head Content icons, or
 * 2: Previous selection was one of the Head Content icons.
 */

function selectionChanged() {
	var theDOM = dw.getDocumentDOM();
	
	if (theDOM != null) {
		tag = null; 
		getCurTag();
		populateGrid(content);
	}
}

/* function: applyEdits()
 * ----------------------
 * Replaces the opening tag of the currently selected custom tag
 * with a new string that contains all the attribute/value pairs
 * used in the Edit Tag floater.
 */

function applyEdits() {
	if (attlist != null) { // there is a custom tag selected
		var newTag = "<" + prefix + ":" + tagName;
		var content = gc.getContents();
		var theDOM = dw.getDocumentDOM();
		var oldOuterHTML = theDOM.documentElement.outerHTML;
		var offsets = theDOM.nodeToOffsets(tag);
		var beforeNode = oldOuterHTML.substring(0,offsets[0]);
		var afterNode = oldOuterHTML.substring(offsets[0] + tag.outerHTML.indexOf(">") + 1);
		var newOuterHTML;

		for (i = 0; i < attlist.length; i++) {
			if(content[i][1] != "") {
				newTag += " " + attlist[i] + "=\"" + content[i][1] + "\"";
			}
		}
		newTag += ((bodyContent == true) ? ">" : " />");
		newOuterHTML = beforeNode + newTag + afterNode;
		theDOM.documentElement.outerHTML = newOuterHTML;
		if (offsets[0] > theDOM.nodeToOffsets(theDOM.body)[0]) {
			if (tagName == "MM:BEGINLOCK") {
				theDOM.setSelection(offsets[0],offsets[0]+1);
				theDOM.setSelectedNode(theDOM.getSelectedNode());
			}

		}  // update selection if after <BODY> and tag is locked,
       		  // but otherwise do not, since dw may error
	}
}

/* function: reset()
 * -----------------
 * Sets the values of all attributes in the Edit Tag floater to
 * the values from the HTML source after the most recent call to
 * applyEdits().
 */

function reset() {
	populateGrid();
}

/* function: removeTag()
 * ---------------------
 * Removes the currently selected custom tag from the HTML source.
 * If the tag is locked and it has body content, UltraDev only
 * locks the opening tag, dissociating it from the closing tag.
 * To find the closing tag, we find the closing tag by extracting the
 * name of the current tag from the "orig" attribute of the locked
 * tag (which contains the HTML of the original opening tag before it
 * was locked) and searching for the closing tag in all siblings of the
 * current tag located in the DOM after the current tag.
 * Once we have the location of the opening tag and closing tag (if
 * applicable), we generate a new DOM source by concatenating the
 * substrings of all source around the locations we do not want.
 * Generating such a new source is the only way to guarantee we
 * are affecting the untranslated source (locked tags are translated
 * into new source which is displayed in the design window).
*/

function removeTag() {
	if (attlist != null) {
		var theDOM = dw.getDocumentDOM();
		var oldOuterHTML = theDOM.documentElement.outerHTML;
		var offsets = theDOM.nodeToOffsets(tag);
		var beforeNode = oldOuterHTML.substring(0,offsets[0]);
		var afterNode = oldOuterHTML.substring(offsets[1]);
		var sibNodes = tag.parentNode.childNodes; //the sibling tags of the current tag
		var escapedText; //the text of the currently selected tag
		var closingName; //the text of the closing tag for the currently selected tag
		var beforeClose; //the offset of the closing tag
		var curOuter; //outer HTML of currently tested sibling node
		var curSibOffsets; //offsets of currently tested sibling node
		var curSelection = theDOM.getSelection(); //offsets of the current selection
		var orig = unescape(tag.getAttribute("ORIG"));



		if (tag.tagName == "MM:BEGINLOCK") { // tag is locked
			escapedText = unescape(tag.getAttribute("ORIG")); 
			closingName = "</" + escapedText.split(/<\s*|\s+/)[1] + ">";
			if (bodyContent) {
				for (i = 0; i < sibNodes.length; i++) {
					curOuter = sibNodes[i].outerHTML;
					curSibOffsets = theDOM.nodeToOffsets(sibNodes[i]);					
					if (curOuter.substring(curOuter.length - (closingName.length)) == closingName &&
						curSibOffsets[0] >= offsets[0]) {
						beforeClose = theDOM.nodeToOffsets(sibNodes[i])[1] - closingName.length;
						break;	
					}
				}
				if (i == sibNodes.length) {
					alert("Could not find closing tag for current tag. Remove tag manually.");
					return;
				}
				else {
					theDOM.documentElement.outerHTML = oldOuterHTML.substring(0,offsets[0]) +
					oldOuterHTML.substring(offsets[1],beforeClose) +
					oldOuterHTML.substring(beforeClose + closingName.length);
					//tag = null;
					theDOM.setSelection(offsets[0] + (offsets[1]-offsets[0]), beforeClose);
				}
			}
			else {
				theDOM.documentElement.outerHTML = oldOuterHTML.substring(0,offsets[0]) + 
					oldOuterHTML.substring(offsets[1]);
				//tag = null;
				theDOM.setSelection(offsets[0], offsets[0]);
			}	  
		}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合久久综合亚洲| 日本亚洲欧美天堂免费| 国产精品久久久久久福利一牛影视| 日韩美女天天操| 欧美大片免费久久精品三p| 欧美日韩国产中文| 51久久夜色精品国产麻豆| 欧美日韩国产成人在线免费| 欧美性猛交一区二区三区精品| 欧美午夜宅男影院| 91麻豆精品国产91久久久使用方法| 欧美色涩在线第一页| 欧美日韩国产一区二区三区地区| 欧美日韩亚洲另类| 制服丝袜中文字幕亚洲| 欧美一区二区三区在线视频| 日韩一区二区精品| 精品国产免费视频| 亚洲国产电影在线观看| 亚洲欧美另类在线| 图片区日韩欧美亚洲| 蜜臀av性久久久久av蜜臀妖精| 国产综合久久久久影院| 成人激情午夜影院| 欧美亚洲一区三区| 日韩欧美电影在线| 欧美国产综合色视频| 亚洲另类在线视频| 日韩精品五月天| 国产精品正在播放| 91丨porny丨最新| 欧美久久久久久蜜桃| 久久亚洲影视婷婷| 日韩毛片在线免费观看| 偷窥国产亚洲免费视频| 韩国视频一区二区| 在线免费视频一区二区| 欧美一区二区三区免费观看视频| 久久精品欧美一区二区三区麻豆 | 亚洲精品国产品国语在线app| 亚洲福中文字幕伊人影院| 久久国产综合精品| 成人av午夜影院| 欧美日韩国产另类一区| 日韩精品一区二区三区视频播放 | 欧美性猛交xxxxxxxx| 欧美mv和日韩mv的网站| 国产精品的网站| 六月丁香婷婷久久| 色偷偷成人一区二区三区91 | 亚洲国产成人精品视频| 精品一区二区三区免费视频| 色成年激情久久综合| 欧美成人aa大片| 夜夜嗨av一区二区三区| 国产中文字幕精品| 欧美日韩一区高清| 国产精品福利一区二区| 日本不卡视频在线| 91免费版pro下载短视频| 久久综合色之久久综合| 亚洲福利国产精品| av电影在线观看完整版一区二区| 欧美一区二区三区性视频| 亚洲欧洲另类国产综合| 久久99精品国产麻豆不卡| 色综合久久66| 国产精品萝li| 国产一区二区三区免费在线观看| 欧美日韩在线观看一区二区| 国产精品色在线| 久色婷婷小香蕉久久| 欧美人狂配大交3d怪物一区| 中文字幕一区二区三区精华液| 精品在线免费观看| 欧美剧情片在线观看| 亚洲啪啪综合av一区二区三区| 国产麻豆视频一区| 91精品国产色综合久久不卡蜜臀| 一区二区在线观看免费| 波多野结衣精品在线| 欧美精品一区二区久久久| 日日夜夜精品免费视频| 欧美这里有精品| 亚洲视频图片小说| 成人的网站免费观看| 久久精品男人的天堂| 精品一区二区三区免费观看| 日韩欧美一级精品久久| 日日摸夜夜添夜夜添国产精品| 欧美体内she精视频| 亚洲另类色综合网站| 91同城在线观看| 亚洲女同女同女同女同女同69| 成人精品亚洲人成在线| 国产欧美精品日韩区二区麻豆天美| 久久疯狂做爰流白浆xx| 日韩女同互慰一区二区| 免费观看在线综合色| 9191精品国产综合久久久久久 | 成人精品免费视频| 日本一区二区电影| 岛国精品在线播放| 国产精品久久久久久久久晋中| 国产成人aaa| 国产精品毛片大码女人| a级高清视频欧美日韩| 亚洲欧洲日韩女同| 欧美在线影院一区二区| 五月综合激情婷婷六月色窝| 7777精品久久久大香线蕉| 日韩福利视频网| 91精品国产欧美一区二区成人| 日韩精品一二区| 精品日韩成人av| 国产盗摄一区二区| 亚洲视频免费看| 欧美色爱综合网| 日本中文字幕一区二区有限公司| 欧美一区午夜精品| 国产老妇另类xxxxx| 国产精品短视频| 欧洲人成人精品| 日本不卡一区二区三区高清视频| 欧美tickling挠脚心丨vk| 国产成人精品亚洲日本在线桃色| 国产精品久久久久9999吃药| 色999日韩国产欧美一区二区| 午夜精品一区二区三区免费视频| 日韩视频一区二区在线观看| 国产精品一级二级三级| 亚洲视频电影在线| 91精品国产综合久久福利| 国产激情91久久精品导航| 亚洲伦理在线免费看| 欧美一区二区黄| 国产91色综合久久免费分享| 亚洲精品国产成人久久av盗摄 | 国产精品久久久久久一区二区三区| 91在线一区二区三区| 日韩avvvv在线播放| 欧美国产精品一区二区| 欧美性大战xxxxx久久久| 国产专区综合网| 一区二区三区免费| 精品99一区二区| 一本大道久久a久久综合| 久久精品国产成人一区二区三区| 国产精品免费视频观看| 在线播放日韩导航| 成人av午夜影院| 蜜臀91精品一区二区三区| 亚洲欧美在线aaa| 日韩欧美国产麻豆| 色婷婷国产精品| 国产精品性做久久久久久| 亚洲影视在线观看| 久久精品亚洲精品国产欧美kt∨| 在线观看区一区二| 国产成人免费视频精品含羞草妖精| 亚洲精品国产一区二区精华液| 日韩精品专区在线影院重磅| 91香蕉视频mp4| 国产麻豆成人传媒免费观看| 香港成人在线视频| 中文字幕一区二区三区乱码在线| 欧美电影免费观看高清完整版在线 | av亚洲精华国产精华| 老司机精品视频在线| 一二三四区精品视频| 国产精品视频一二三区| 欧美成人一区二区| 欧美精三区欧美精三区| 97久久人人超碰| 国产精品系列在线观看| 日本不卡视频在线| 亚洲一二三专区| 最新久久zyz资源站| www国产成人| 日韩欧美一级在线播放| 欧美日韩一区二区不卡| 91小视频免费观看| 成人丝袜18视频在线观看| 国产最新精品免费| 麻豆国产精品777777在线| 亚洲小少妇裸体bbw| 亚洲图片你懂的| 欧美韩国一区二区| 国产喂奶挤奶一区二区三区| 日韩精品一区在线| 欧美一区二区三区免费| 欧美日韩精品一区二区三区| 色屁屁一区二区| 91在线视频18| a4yy欧美一区二区三区| av资源站一区| 99视频国产精品| 99在线热播精品免费| www.欧美精品一二区| 不卡的av网站|