edit.js
上传用户:nbluoke
上传日期:2013-08-09
资源大小:4851k
文件大小:10k
源码类别:

教育系统应用

开发平台:

WORD

  1. SEP_PADDING = 5
  2. HANDLE_PADDING = 7
  3. var yToolbars = new Array();
  4. var YInitialized = false;
  5. function temp()
  6. {
  7. }
  8. function insertHtml(HtmlCode)
  9. {
  10. var win=window.editor.Composition.document;//其中编辑区域是gledit.jsp中的一个iframe,id是idEditbox
  11. window.editor.Composition.focus();//是编辑器获得焦点,防止代码插入在编辑器外地方
  12. win.selection.createRange().pasteHTML(HtmlCode)//在光标的位置插入html代码
  13. }
  14. function document.onreadystatechange()
  15. {
  16.   if (YInitialized) return;
  17.   YInitialized = true;
  18.   var i, s, curr;
  19.   for (i=0; i<document.body.all.length; i++)
  20.   {
  21.     curr=document.body.all[i];
  22.     if (curr.className == "yToolbar")
  23.     {
  24.       InitTB(curr);
  25.       yToolbars[yToolbars.length] = curr;
  26.     }
  27.   }
  28.   DoLayout();
  29.   window.onresize = DoLayout;
  30.   Composition.document.open()
  31.   Composition.document.write("<head><style type="text/css">body {font-size: 10.8pt}</style><meta http-equiv=Content-Type content="text/html; charset=gb2312"></head><BODY bgcolor="#FFFFFF" MONOSPACE></body>");
  32.   Composition.document.close()
  33.   Composition.document.designMode="On"
  34. }
  35. function InitBtn(btn)
  36. {
  37.   btn.onmouseover = BtnMouseOver;
  38.   btn.onmouseout = BtnMouseOut;
  39.   btn.onmousedown = BtnMouseDown;
  40.   btn.onmouseup = BtnMouseUp;
  41.   btn.ondragstart = YCancelEvent;
  42.   btn.onselectstart = YCancelEvent;
  43.   btn.onselect = YCancelEvent;
  44.   btn.YUSERONCLICK = btn.onclick;
  45.   btn.onclick = YCancelEvent;
  46.   btn.YINITIALIZED = true;
  47.   return true;
  48. }
  49. function InitTB(y)
  50. {
  51.   y.TBWidth = 0;
  52.   if (! PopulateTB(y)) return false;
  53.   y.style.posWidth = y.TBWidth;
  54.   return true;
  55. }
  56. function YCancelEvent()
  57. {
  58.   event.returnValue=false;
  59.   event.cancelBubble=true;
  60.   return false;
  61. }
  62. function BtnMouseOver()
  63. {
  64.   if (event.srcElement.tagName != "IMG") return false;
  65.   var image = event.srcElement;
  66.   var element = image.parentElement;
  67.   if (image.className == "Ico") element.className = "BtnMouseOverUp";
  68.   else if (image.className == "IcoDown") element.className = "BtnMouseOverDown";
  69.   event.cancelBubble = true;
  70. }
  71. function BtnMouseOut()
  72. {
  73.   if (event.srcElement.tagName != "IMG") {
  74.     event.cancelBubble = true;
  75.     return false;
  76.   }
  77.   var image = event.srcElement;
  78.   var element = image.parentElement;
  79.   yRaisedElement = null;
  80.   element.className = "Btn";
  81.   image.className = "Ico";
  82.   event.cancelBubble = true;
  83. }
  84. function BtnMouseDown()
  85. {
  86.   if (event.srcElement.tagName != "IMG") {
  87.     event.cancelBubble = true;
  88.     event.returnValue=false;
  89.     return false;
  90.   }
  91.   var image = event.srcElement;
  92.   var element = image.parentElement;
  93.   element.className = "BtnMouseOverDown";
  94.   image.className = "IcoDown";
  95.   event.cancelBubble = true;
  96.   event.returnValue=false;
  97.   return false;
  98. }
  99. function BtnMouseUp()
  100. {
  101.   if (event.srcElement.tagName != "IMG") {
  102.     event.cancelBubble = true;
  103.     return false;
  104.   }
  105.   var image = event.srcElement;
  106.   var element = image.parentElement;
  107.   if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()");
  108.   element.className = "BtnMouseOverUp";
  109.   image.className = "Ico";
  110.   event.cancelBubble = true;
  111.   return false;
  112. }
  113. function PopulateTB(y)
  114. {
  115.   var i, elements, element;
  116.   elements = y.children;
  117.   for (i=0; i<elements.length; i++) {
  118.     element = elements[i];
  119.     if (element.tagName == "SCRIPT" || element.tagName == "!") continue;
  120.     switch (element.className) {
  121.     case "Btn":
  122.       if (element.YINITIALIZED == null) {
  123. if (! InitBtn(element))
  124. return false;
  125.       }
  126.       element.style.posLeft = y.TBWidth;
  127.       y.TBWidth += element.offsetWidth + 1;
  128.       break;
  129.     case "TBGen":
  130.       element.style.posLeft = y.TBWidth;
  131.       y.TBWidth += element.offsetWidth + 1;
  132.       break;
  133.     case "TBSep":
  134.       element.style.posLeft = y.TBWidth + 2;
  135.       y.TBWidth += SEP_PADDING;
  136.       break;
  137.     case "TBHandle":
  138.       element.style.posLeft = 2;
  139.       y.TBWidth += element.offsetWidth + HANDLE_PADDING;
  140.       break;
  141.     default:
  142.       return false;
  143.     }
  144.   }
  145.   y.TBWidth += 1;
  146.   return true;
  147. }
  148. function DebugObject(obj)
  149. {
  150.   var msg = "";
  151.   for (var i in TB) {
  152.     ans=prompt(i+"="+TB[i]+"n");
  153.     if (! ans) break;
  154.   }
  155. }
  156. function LayoutTBs()
  157. {
  158.   NumTBs = yToolbars.length;
  159.   if (NumTBs == 0) return;
  160.   var i;
  161.   var ScrWid = (document.body.offsetWidth) - 6;
  162.   var TotalLen = ScrWid;
  163.   for (i = 0 ; i < NumTBs ; i++) {
  164.     TB = yToolbars[i];
  165.     if (TB.TBWidth > TotalLen) TotalLen = TB.TBWidth;
  166.   }
  167.   var PrevTB;
  168.   var LastStart = 0;
  169.   var RelTop = 0;
  170.   var LastWid, CurrWid;
  171.   var TB = yToolbars[0];
  172.   TB.style.posTop = 0;
  173.   TB.style.posLeft = 0;
  174.   var Start = TB.TBWidth;
  175.   for (i = 1 ; i < yToolbars.length ; i++) {
  176.     PrevTB = TB;
  177.     TB = yToolbars[i];
  178.     CurrWid = TB.TBWidth;
  179.     if ((Start + CurrWid) > ScrWid) {
  180.       Start = 0;
  181.       LastWid = TotalLen - LastStart;
  182.     }
  183.     else {
  184.       LastWid = PrevTB.TBWidth;
  185.       RelTop -= TB.offsetHeight;
  186.     }
  187.     TB.style.posTop = RelTop;
  188.     TB.style.posLeft = Start;
  189.     PrevTB.style.width = LastWid;
  190.     LastStart = Start;
  191.     Start += CurrWid;
  192.   }
  193.   TB.style.width = TotalLen - LastStart;
  194.   i--;
  195.   TB = yToolbars[i];
  196.   var TBInd = TB.sourceIndex;
  197.   var A = TB.document.all;
  198.   var item;
  199.   for (i in A) {
  200.     item = A.item(i);
  201.     if (! item) continue;
  202.     if (! item.style) continue;
  203.     if (item.sourceIndex <= TBInd) continue;
  204.     if (item.style.position == "absolute") continue;
  205.     item.style.posTop = RelTop;
  206.   }
  207. }
  208. function DoLayout()
  209. {
  210.   LayoutTBs();
  211. }
  212. function validateMode()
  213. {
  214.   if (! bTextMode) return true;
  215.   alert("请取消“使用 HTML 语法书写”选项再使用系统编辑功能!");
  216.   Composition.focus();
  217.   return false;
  218. }
  219. function format1(what,opt)
  220. {
  221.   if (opt=="removeFormat")
  222.   {
  223.     what=opt;
  224.     opt=null;
  225.   }
  226.   if (opt==null) Composition.document.execCommand(what);
  227.   else Composition.document.execCommand(what,"",opt);
  228.   pureText = false;
  229.   Composition.focus();
  230. }
  231. function format(what,opt)
  232. {
  233.   if (!validateMode()) return;
  234.   format1(what,opt);
  235. }
  236. function setMode(newMode)
  237. {
  238.   bTextMode = newMode;
  239.   var cont;
  240.   if (bTextMode) {
  241.     cleanHtml();
  242.     cleanHtml();
  243.     cont=Composition.document.body.innerHTML;
  244.     Composition.document.body.innerText=cont;
  245.   } else {
  246.     cont=Composition.document.body.innerText;
  247.     Composition.document.body.innerHTML=cont;
  248.   }
  249.   Composition.focus();
  250. }
  251. function getEl(sTag,start)
  252. {
  253.   while ((start!=null) && (start.tagName!=sTag)) start = start.parentElement;
  254.   return start;
  255. }
  256. function UserDialog(what)
  257. {
  258.   if (!validateMode()) return;
  259.   Composition.document.execCommand(what, true);
  260.   pureText = false;
  261.   Composition.focus();
  262. }
  263. function foreColor()
  264. {
  265.   if (! validateMode()) return;
  266.   var arr = showModalDialog("selcolor.htm", "", "dialogWidth:18.5em; dialogHeight:17.5em; status:0");
  267.   if (arr != null) format('forecolor', arr);
  268.   else Composition.focus();
  269. }
  270. function fortable()
  271. {
  272.   if (! validateMode()) return;
  273.   var arr = showModalDialog("table.htm", "", "dialogWidth:18.5em; dialogHeight:11.5em; status:0");
  274.   if (arr != null){
  275.   var ss;
  276.   ss=arr.split("*")
  277.   row=ss[0];
  278.   col=ss[1];
  279.   var string;
  280.   string="<table border=1>";
  281.   for(i=1;i<=row;i++){
  282.   string=string+"<tr>";
  283.   for(j=1;j<=col;j++){
  284.   string=string+"<td></td>";
  285.   }
  286.   string=string+"</tr>";
  287.   }
  288.   string=string+"</table>";
  289.   content=Composition.document.body.innerHTML;
  290.   content=content+string;
  291.    Composition.document.body.innerHTML=content;
  292.   }
  293.   else Composition.focus();
  294. }
  295. function cleanHtml()
  296. {
  297.   var fonts = Composition.document.body.all.tags("FONT");
  298.   var curr;
  299.   for (var i = fonts.length - 1; i >= 0; i--) {
  300.     curr = fonts[i];
  301.     if (curr.style.backgroundColor == "#ffffff") curr.outerHTML = curr.innerHTML;
  302.   }
  303. }
  304. function getPureHtml()
  305. {
  306.   var str = "";
  307.   var paras = Composition.document.body.all.tags("P");
  308.   if (paras.length > 0) {
  309.     for (var i=paras.length-1; i >= 0; i--) str = paras[i].innerHTML + "n" + str;
  310.   } else {
  311.     str = Composition.document.body.innerHTML;
  312.   }
  313.   return str;
  314. }
  315. var bLoad=false
  316. var pureText=true
  317. var bodyTag="<head><style type="text/css">body {font-size: 9pt;line-height: 20px;}</style><meta http-equiv=Content-Type content="text/html; charset=gb2312"></head><BODY bgcolor="#FFFFFF" MONOSPACE>"
  318. var bTextMode=false
  319. public_description=new Editor
  320. function Editor()
  321. {
  322.   this.put_HtmlMode=setMode;
  323.   this.put_value=putText;
  324.   this.get_value=getText;
  325. }
  326. function getText()
  327. {
  328. if (bTextMode)
  329. return Composition.document.body.innerText;
  330. else
  331. {
  332. cleanHtml();
  333. cleanHtml();
  334. return Composition.document.body.innerHTML;
  335. }
  336. }
  337. function putText(v)
  338. {
  339. if (bTextMode)
  340. Composition.document.body.innerText = v;
  341. else
  342. Composition.document.body.innerHTML = v;
  343. }
  344. function InitDocument()
  345. {
  346. Composition.document.open();
  347. Composition.document.write(bodyTag);
  348. Composition.document.close();
  349. bLoad=true;
  350. }
  351. function doSelectClick(str, el) {
  352. var Index = el.selectedIndex;
  353. if (Index != 0){
  354. el.selectedIndex = 0;
  355. if (el.id == "specialtype")
  356. specialtype(el.options[Index].value);
  357. else
  358. format(str,el.options[Index].value);
  359. }
  360. }
  361. var bIsIE5 = navigator.userAgent.indexOf("IE 5")  > -1;
  362. var edit;
  363. var RangeType;
  364. function specialtype(Mark){
  365. var strHTML;
  366. if (bIsIE5) selectRange();
  367. if (RangeType == "Text"){
  368. strHTML = "<" + Mark + ">" + edit.text + "</" + Mark + ">";
  369. edit.pasteHTML(strHTML);
  370. Composition.focus();
  371. edit.select();
  372. }
  373. }
  374. function selectRange(){
  375. edit = Composition.document.selection.createRange();
  376. RangeType =  Composition.document.selection.type;
  377. }
  378. function help()
  379. {
  380.     var helpmess;
  381.     helpmess="---------------帮助系统---------------rnrn"+
  382.       "1.成保栋发布资料前请先查找有无雷同的资料,以免重复发布!rnrn"+
  383.          "2.同一段换行时请用Shit+Enter。rnrn"+
  384.  "3.若非特殊需要,请别随意改变字体、大小及颜色。rnrn"+
  385.          "4.出处和标题不能超过50个字符,若超过则自动截断.";
  386.     alert(helpmess);
  387. }