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

📄 rte.js

📁 一个功能非常强大的新闻发布系统,里面的技术都是采用最新的,支持当前最流行的网站风格,是大家非常值得学习的一个网站.
💻 JS
📖 第 1 页 / 共 3 页
字号:
// Copyright (C) 2000, Microsoft, Corp. All rights reserved.
// File: rte.js
// Author: Scott Isaacs
// Contents: RTE Management Code


//  EDITOR PUBLIC (API)

var isIE4 = (navigator.appVersion.indexOf("MSIE 4")>0)

function setHTML(szHTML) 
{
	if (szHTML=="") szHTML = L_DEFAULTHTML_TEXT
	if (g_state.bMode)
		idEditbox.document.body.innerHTML = szHTML
	else
		idEditbox.document.body.innerText = szHTML
	if (g_state.bLoaded)
		setSelection(true)
}
function set(szHTML) 
{
		idEditbox.document.body.innerHTML = szHTML

}

function getHTML() 
{
	var szRet = (g_state.bMode ?  _CUtil_TrimCR(_CUtil_CleanHTML()) :  _CUtil_TrimCR(idEditbox.document.body.innerText))
	return szRet
}


function getText() {
	var szRet = ""
	if (g_state.bMode)
		szRet = idEditbox.document.body.innerText
	else {
		setMode(true)
		szRet = idEditbox.document.body.innerText
		setMode(false)
	}
	return szRet
}

function getBody() 
{
	var oRet = idEditbox.document.body
	return oRet
}

function getWidth() 
{
	var nRet = document.body.offsetWidth
	return nRet
}

function getHeight() 
{
	var nRet = document.body.offsetHeight
	return nRet
}

function insertHTML(szHTML) 
{
	var sType

	var sel = g_state.GetSelection()
	sType = sel.type
	if (g_state.bMode) {
		if (sType=="Control")
			sel.item(0).outerHTML = szHTML
		else 
			sel.pasteHTML(szHTML)
	}
	else
		sel.text = szHTML
	g_state.selection = null
}

function setFocus() {
	idEditbox.focus()
}

function appendHTML(szHTML) {
	if (g_state.bMode) 
		idEditbox.document.body.insertAdjacentHTML("beforeEnd",szHTML)
	else
		idEditbox.document.body.insertAdjacentText("beforeEnd",szHTML)
}

function setBGColor(szValue) 
{
	g_state.bgColor = szValue

	if (g_state.bMode)
		idEditbox.document.body.bgColor = g_state.bgColor
}

function setSelection(bDir) {
	var tr = idEditbox.document.body.createTextRange()
	tr.collapse(bDir)
	tr.select()
	g_state.SaveSelection()
}

function getBGColor() 
{
	var szRet = g_state.bgColor
	return szRet
}

function setDefaultStyle(szValue) 
{
	g_state.css = szValue
	if (g_state.bMode)
		idEditbox.document.body.style.cssText = g_state.css
}

function getDefaultStyle() 
{
	var oRet = g_state.css
	return oRet
}

function setSkin(szSkin) 
{
	if (szSkin == null)
		document.styleSheets.skin.cssText = g_state.defaultSkin
	else
		document.styleSheets.skin.cssText = szSkin
	document.styleSheets.skin.disabled = false	
}

function appendSkin(szSkin)
{
	document.styleSheets.appendSkin.cssText = szSkin
}

function setPopupSkin(szSkin) 
{
	if (szSkin == null)
		document.styleSheets.popupSkin.cssText = g_state.popupSkin
	else
		document.styleSheets.popupSkin.cssText = szSkin

	_CPopup_Init()
}

function setToolbar(id,g_state) 
{
	var el = document.all[id]
	if (el)
		el.style.display = (g_state) ? "" : "none"	
	if (id=="tbmode") {
		_setSize()
	}
}

function setLinks(arLinks) 
{
	g_state.aLinks = arLinks
}

function setBindings(aBindings) 
{
	if ((aBindings) && (aBindings.length>0)) 
	{
		g_state.aBindings = aBindings

		for (var iField = DBSelect.length-1; iField > 0; iField--)
			DBSelect[iField] = null

		for (var iField = 0; iField < g_state.aBindings.length; iField++)
			DBSelect.add(new Option(g_state.aBindings[iField]))

		tbDBSelect.style.display = "inline"
	}
	else
		tbDBSelect.style.display = ""
}

function setMode(bMode) 
{
	if (bMode!=g_state.bMode) {
		g_state.bMode = bMode
	
		var objBody = idEditbox.document.body
		if (!bMode&& !g_state.bMode) 
		{
			_CPopup_Hide()
			objBody.bgColor = objBody.style.cssText = ""
			if (g_state.customButtons)
				idStandardBar.style.display = "none"
			else
				idToolbar.style.display = "none"
	
			objBody.innerText = idEditbox.document.body.innerHTML
			objBody.className = "textMode"
		}
		if ((bMode) && (g_state.bMode)) 
		{
			setDefaultStyle(g_state.css)
			setBGColor(g_state.bgColor)
			objBody.className = idStandardBar.style.display = idToolbar.style.display = ""
			objBody.innerHTML = idEditbox.document.body.innerText
		}
		_setSize()
		cbMode.checked = !bMode
		setSelection(true)
		setFocus()
	}	
	return bMode
}

function addButton(sID,sButton) 
{
	if (!sID)
		tbButtons.insertAdjacentHTML("beforeEnd","<BR>")
	else	
		tbButtons.insertAdjacentHTML("beforeEnd","<BUTTON TYPE=\"button\" ONCLICK=\"_userButtonClick(this)\" CLASS=\"userButton\" ID=\"" + sID + "\">" + sButton + "\</BUTTON>&nbsp;")
	
	g_state.customButtons = true
	return tbButtons.all[sID]
}

//  EDITOR PRIVATE

function _Format(szHow, szValue) {
	var oSel	= g_state.GetSelection()
	var sType   = oSel.type 
	var oTarget = (sType == "None" ? idEditbox.document : oSel)
	var oBlock  = (oSel.parentElement != null ? _CUtil_GetBlock(oSel.parentElement()) : oSel.item(0))
	setFocus()
	switch(szHow)
	{
		case "BackColor":
			var el = null
			if (oSel.parentElement != null) {
				el =  _CUtil_GetElement(oSel.parentElement(),"TD")
				if (!el) el =  _CUtil_GetElement(oSel.parentElement(),"TH")
				if (!el) el =  _CUtil_GetElement(oSel.parentElement(),"TR")
				if (!el) el =  _CUtil_GetElement(oSel.parentElement(),"TABLE")
			}
			else 
				el = _CUtil_GetElement(oSel.item(0),"TABLE")
			if (el)
				el.bgColor = szValue
			else
				setBGColor(szValue)
			break;
		case "Justify":
			if (oBlock) 
			{
				oBlock.style.textAlign = ""
				if (((oBlock.tagName=="TABLE") || (oBlock.tagName=="IMG")) && (("left"==oBlock.align) && ("Left"==szValue))) {
					oBlock.align = ""
					break;
				}	
				oBlock.align = szValue
				if ((oBlock.tagName=="HR") || ((oBlock.tagName=="IMG") && szValue!="Center")) break;
			}
			szHow=szHow+szValue
			szValue=""
			// Fall through
		default:
			oTarget.execCommand(szHow, false, szValue)
			break
	}
	g_state.RestoreSelection()
	setFocus()
	return true
}

function _fireFocus() {
	if (self.parent.RTEFocus)
		self.parent.RTEFocus(self)
}

function _initEditor() {
	g_state = new _CState()
	window.onresize = _setSize

	var sz  =   ""
	sz  +=  ""
	+   "<STYLE>"
	+	   ".DataBound{border:1 solid #999999;margin:1;font-family:Courier;background:#F1F1F1}\n"
	+	   ".textMode {border-top: 1px black solid;font: 10pt courier}\n.NOBORDER TD {border:1px gray solid}"
	+	   "BODY {border: 1px black solid;border-top: none;}"
	+   "</STYLE>"
    +   "<BODY bgcolor=#FFFFFF ONCONTEXTMENU=\"return false\">"
	+		L_DEFAULTHTML_TEXT
	+   "</BODY>"
	_CPopup_Init()
	idEditbox.document.designMode = "on"
	idEditbox.document.open("text/html","replace")
	idEditbox.document.write(sz)
	idEditbox.document.close()
	idEditbox.document.body.onblur = idEditbox.onblur = g_state.SaveSelection	
	idEditbox.document.onkeydown = _Editor_KeyDownHandler
	idEditbox.document.onmousedown = _Editor_ClickHandler
	idEditbox.document.ondblclick = _Editor_DblClickHandler
	setTimeout("_pageReady()",0)
}

function _Editor_ClickHandler() {
	g_state.selection = null
}

function _Editor_KeyDownHandler() {
	var ev = this.parentWindow.event
	if ((ev.keyCode==78 || ev.keyCode==72) && ev.ctrlKey) {
		if (ev.keyCode==78)
			window.open(parent.location)
		ev.keyCode=0;ev.returnValue=false
	}

	if (ev.keyCode==9)
		g_state.SaveSelection() 
	else 
		g_state.selection=null
}

function _Editor_DblClickHandler() {
	// Shortcuts
	var el = this.parentWindow.event.srcElement
	if (el.tagName=="IMG")  {
		el.removeAttribute("width")
		el.removeAttribute("height")
		el.style.removeAttribute("width")
		el.style.removeAttribute("height")
		el.width = el.width
		el.height = el.height
	}
	if (el.tagName=="TABLE") 
		_CPopup_Show('Table')
}

function _setSize() {
	document.all.idEditbox.style.pixelHeight = document.body.clientHeight - idToolbar.offsetHeight - document.all.idMode.offsetHeight
	document.all.idPopup.style.pixelLeft = (document.body.clientWidth - idPopup.document.all.puRegion.offsetWidth) / 2	
}

function _pageReady() 
{
    idEditbox.document.body.oncontextmenu = new Function("return false");
//	if (g_state.GetSharedSubDomain()!="")
//	idPopup.document.domain = idEditbox.document.domain = document.domain = g_state.szSharedSubDomain;
//	else {
//        // BUGBUG -- ARRRGGHH!  What is this?
//		// Already in same domain - force suffix so my photos work
//		if (0 != location.href.indexOf('msn://')) {
//			g_state.szSearch = _CUtil_DomainSuffix(location.hostname)
//            alert('search set to = '+g_state.szSearch);
//			if (g_state.szSearch!="")
//				idPopup.document.domain = idEditbox.document.domain = document.domain = parent.document.domain = g_state.szSearch
//		}
//		else // we're in the MSN domain
//			if (parent.location == self.location) parent.location.href = 'compose.htm'
//	}
	
	if (self.parent.RTELoaded)
		self.parent.RTELoaded(self)
	if (document.styleSheets.skin.disabled) 
		setSkin(null)
	_setSize()
	idEditor.style.visibility=""
	g_state.bLoaded = true
	var tr = idEditbox.document.body.createTextRange()
	tr.select()
	g_state.SaveSelection()
	setSelection(false)
	
}

function _userButtonClick(el) 
{
	if (parent.RTEButton) parent.RTEButton(self, el.id)
}

//lxh add
function UrlEnco(url)
{
	url = url + "";
	var m_url = url;
    var outstring = "";
    var x1 = 0;
    for(x1 = 0 ; x1 < (m_url.length) ; x1++)
    {
		chr = m_url.substr(x1,1);
        if(chr=='<')
        {
          outstring += "&lt;";
          continue;
        }
        if(chr=='>')
        {
          outstring += "&gt;";
          continue;
        }
		if(chr=='"')
        {
          outstring += "";
          continue;
        }
		if(chr=='\'')
        {
          outstring += "";
          continue;
        }			       
        outstring += chr;
    }
    return outstring;
}

function insertImg()
{       
  //var DoA = getElem("A",g_state.selection.createRange().parentElement())
  var oSel	= g_state.GetSelection()
  var oBlock  = (oSel.parentElement != null ? _CUtil_GetBlock(oSel.parentElement()) : oSel.item(0))
  var languageName = document.forms["newsPro"].elements["editlanguage"].value;
  var editImageNum = document.forms["newsPro"].elements["editImageNum"].value;
  var editRemNum = document.forms["newsPro"].elements["editRemNum"].value;
  
  var openurl = "uploadPic.asp?language="+languageName+"&editImageNum="+editImageNum+"&editRemNum="+editRemNum;
  
  if (oBlock.tagName=="IMG")
  {
	  openurl = openurl+"&actionType=mod&picName="+oBlock.src;
  }
  
  var htmlStr
  var str = showModalDialog(openurl,window,"dialogLeft:"+(event.screenX-245)+";dialogTop:"+(event.screenY+5)+";dialogWidth:350px; dialogHeight:230px; edge:raised;help:off;status:off;scroll:off")
  if ((str != null))
  {	  
	  insertHTML(str);
   }
}
//lxh

//工具栏的书写
function _drawToolbar()
{
	var aIds = new Array("cut","copy","paste","bar1","undo","redo","bar2","formatblock","fontstyle","fontsize","bar3","bold","italic","underline","bar4","left","center","right","bar5","orderedlist","unorderedlist","outdent","indent","bar6","line","link","table","bar7","bgcolor","textcolor","bar7")
	var aTips = new Array(L_TIPCUT_TEXT,L_TIPCOPY_TEXT,L_TIPPASTE_TEXT,"",L_TIP_UNDO,L_TIP_REDO,"",L_TIPP_TEXT,L_TIPFSTYLE_TEXT,L_TIPFSIZE_TEXT,"",L_TIPB_TEXT,L_TIPI_TEXT,L_TIPU_TEXT,"",L_TIPLJ_TEXT,L_TIPCJ_TEXT,L_TIPRJ_TEXT,"",L_TIPOL_TEXT,L_TIPUL_TEXT,L_TIPDINDENT_TEXT,L_TIPIINDENT_TEXT,"",L_TIPLINE_TEXT,L_TIPLINK_TEXT,L_TIPTABLE_TEXT,"",L_TIPBGCOLOR_TEXT,L_TIPFGCOLOR_TEXT,"")
	//var aCommand = new Array("_Format('cut')","_Format('copy')","_Format('paste')",null,"_Format('undo')","_Format('redo')","_CPopup_Show('formatblock')","_CPopup_Show('font')","_CPopup_Show('fontsize')",null,"_Format('bold')","_Format('italic')","_Format('underline')",null,"_Format('Justify','Left')","_Format('Justify','Center')","_Format('Justify','Right')",null,"_Format('insertorderedlist')","_Format('insertunorderedlist')","_Format('outdent')","_Format('indent')",null,"_Format('InsertHorizontalRule')","_CPopup_Show('Link')","_CPopup_Show('Table')",null,"_CPopup_Show('BackColor')","_CPopup_Show('ForeColor')",null)
	var aCommand = new Array("_Format('cut')","_Format('copy')","_Format('paste')",null,"_Format('undo')","_Format('redo')",null,"_CPopup_Show('formatblock')","_CPopup_Show('font')","_CPopup_Show('fontsize')",null,"_Format('bold')","_Format('italic')","_Format('underline')",null,"_Format('Justify','Left')","_Format('Justify','Center')","_Format('Justify','Right')",null,"_Format('insertorderedlist')","_Format('insertunorderedlist')","_Format('outdent')","_Format('indent')",null,"_Format('InsertHorizontalRule')","_CPopup_Show('Link')","_CPopup_Show('Table')",null,"_CPopup_Show('BackColor')","_CPopup_Show('ForeColor')",null)
	var sz = "<DIV ID=idStandardBar><NOBR>", iLeft=0, iHeight=24
	for (var i = 0 ; i < aSizes.length; i++) 
	{
		sz	+=  ""
		+   "<SPAN CLASS=tbButton ONKEYPRESS=\"if (event.keyCode==13) {" + aCommand[i] + ";event.keyCode=0}\" "
		+	   "ID=\"tb" + aIds[i] + "\" "
		+	   "STYLE=\"width: " + aSizes[i] + ";height:" + iHeight
		+	   "\""
		+   ">" 
		+	   "<SPAN " + (aTips[i]=="" ? "" : "TABINDEX=" + (i+2))
		+		   " STYLE=\""
		+			   "position:absolute;"
		+			   "width:" + aSizes[i] + ";height:" + iHeight + ";"
		+			   "clip: rect(0 " + aSizes[i] + " " + iHeight + " 0)"
		+		   "\""
		+	   ">"
		+		   "<IMG ALT=\"" + aTips[i] + "\" "
		+			   "TITLE=\"" + aTips[i] + "\" "
		+			   "ONCLICK=\"" + aCommand[i] + "; event.cancelBubble=true\" "
		+			   "ONMOUSEDOWN=\"if (event.button==1) this.style.pixelTop=-" + (iHeight*2) + "\" "
		+			   "ONMOUSEOVER=\"this.style.pixelTop=-" + iHeight + "\" "
		+			   "ONMOUSEOUT=\"this.style.pixelTop=0\" "
		+			   "ONMOUSEUP=\"this.style.pixelTop=-" + iHeight + "\" "
		+			   "SRC=\"" + L_TOOLBARGIF_TEXT + "\" "
		+			   "STYLE=\"position:absolute;top:0;left:-" + iLeft + "\""
		+		   ">"
		+	   "</SPAN>"
		+   "</SPAN>" 
		+  (aTips[i]=="" ?  "</NOBR><NOBR>" : "")
		iLeft += aSizes[i]
	}
	sz  +=  ""
	+   "</NOBR>"
	+   "<SPAN CLASS=tbButton ID=\"tbDBSelect\"><NOBR>&nbsp;&nbsp;" 
	+	L_TBDATALABEL_TEXT + " <SELECT "
	+		   "ID=DBSelect "
	+		   "ONCLICK='event.cancelBubble=true;' "

⌨️ 快捷键说明

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