なんというか、夜を終えたばかりで、とても疲れているはずですが、文字を入力する体力はまだ残っており、まだ終わっていないようです。 早速ですが、私は最近、ewebeditor に似たオンライン エディターを作成しました。もちろん他のものほど強力ではありませんが、基本的な機能が備わっており、IE や FF とも互換性があります。これは、すぐにコードを取り出しましょう demo.html: コードをコピーしますコードは次のとおりです: フォント: 宋体< option value="Helvetica ">HelveticaKaili script模倣歌王朝<オプション値="公式台本">公式台本ヨウユアン新曲スタイル興明スタイル Arial Arial Black ブラッドリー ハンド ITC ブラシ スクリプト MT Century Gothic Comic Sans MS Courier MS Sans Serif スクリプト システム Times New Roman Viner Hand ITC Verdana ワイド ラテン語 Wingdings フォント サイズ: 1 2オプション> <オプション値="3">3オプション> 4オプション> 5">5; 6gt; 7< /select> <ボタン onclick="color()">/button> ="italic() ">チルト Left Center< /button> right ムービーと写真を挿入 ファイルをアップロード テーブルを挿入/button>水平線を挿入ハイパーリンクを挿入 ;/td> <BR><BR>core.js<BR>: <BR><BR> <BR><BR><BR>コードをコピー</div><BR><STRONG> コードは次のとおりです:</STRONG><div class="codebody" id="code54300"> <BR>sx={}; <BR>sx.comm={}; <BR>sx.comm.string=function(){ <BR>if(!String.prototype.left){ <BR>String.prototype.left=function(l){ <BR>return this.substr(0, l); <BR>} <BR>} <BR>if(!String.prototype.right){ <BR>String.prototype.right=function(l){ <BR>return this.substr(this.length-l,l ); <BR>} <BR>} <BR>if(!String.prototype.trim){ <BR>String.prototype.trim=function(){ <BR>return this.replace(/^/s |/s $ /g,""); <BR>} <BR>} <BR>}(); <BR>sx.comm.array=function(){ <BR>if(!Array.prototype.indexOf){ <BR>Array.prototype.indexOf=function(data){ <BR>for(var i=0; i<this.length;i ){ <BR>if(this[i]==data){ <BR>break; <BR>} <BR>} <BR>return i==this.length?-1:i; <BR>} <BR>} <BR>if(!Array.prototype.lastIndexOf){ <BR>Array.prototype.lastIndexOf=function(data){ <BR>for(var i=this.length-1;i> ;=0;i--){ <BR>if(this[i]==data){ <BR>ブレーク; <BR>} <BR>} <BR>return i; <BR>} <BR>} <BR>if(!Array.prototype.clone){ <BR>Array.prototype.clone=function(){ <BR>var temp=[]; <BR>for(var i=0;i<this.length;i ){ <BR>if(this[i] instanceof Array){ <BR>temp[i]=this[i].clone(); <BR>}else{ <BR>temp[i]=this[i]; <BR>} <BR>} <BR>温度を返します。 <BR>} <BR>} <BR>if(!Array.prototype.every){ <BR>Array.prototype.every=function(o,f){ <BR>for (var i = 0; i < this.length; i ) { <BR>if (this[i] 配列のインスタンス) { <BR>this[i].every(o,f); <BR>} <BR>else { <BR>f.call(o, this[i]); <BR>} <BR>} <BR>} <BR>} <BR>}(); <BR>sx.comm.ver=function(){ <BR>try{ <BR>HTMLElement; <BR>「ff」を返します; <BR>}catch(e){ <BR>return "ie"; <BR>} <BR>}(); <BR>sx.comm.ext=function(){ <BR>if(sx.comm.ver=="ff"){ <BR>HTMLElement.prototype.__defineGetter__("outerHTML",function(){ <BR> var attr; <BR>var attrs=this.attributes; <BR>var str="<" this.tagName.toLowerCase(); <BR>attr=attrs[i]; <BR>if(attr.specified) <BR>str =" " attr.name '="' attr.value '"' <BR>} <BR>if(! this.canHaveChildren) <BR>return str ">" this.innerHTML "</" this.tagName.toLowerCase() ">"; <br>HTMLElement.prototype.__defineGetter__("canHaveChildren",function(){ <br>switch(this.tagName.toLowerCase()){ <br>case "エリア": <br>case "base": <br> case "basefont": <br>case "col": <br>case "frame": <br>case "hr": <br>case "img": <br>case "br": <br>case " input": <br>case "isindex": <br>case "link": <br>case "meta": <br>case "param": <br>return false; <br>} <br>return true ; <br>}); <br>XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (){ <br>//alert(arguments[0]); <br>var oNSResolver = this.createNSResolver(this.documentElement) <br>var aItems = this.evaluate(arguments[0].toLowerCase(), this, oNSResolver, <br>XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null) <br>var a結果 = []; <br>for( var i = 0; i < aItems.snapshotLength; i ) <BR>{ <BR>aResult[i] = aItems.snapshotItem(i); <BR>} <BR>//alert(aItems.snapshotLength); <BR>Result を返します。 <BR>} <BR>} <BR>}(); <BR>sx.event={}; <BR>sx.event.target=function(){ <BR>if(window.event){ <BR>return window.event.srcElement; <BR>}else{ <BR>var f=arguments.callee.caller; <BR>while(f){ <BR>if(f.arguments[0] instanceof Event){ <BR>return f.arguments[0].target; <BR>} <BR>f=f.caller; <BR>} <BR>} <BR>} <BR>sx.event.event=function(){ <BR>if (window.event) { <BR>return window.event; <BR>}else{ <BR>var f=arguments.callee.caller; <BR>while (f) { <BR>if (f.arguments[0] instanceof Event) { <BR>return f.arguments[0]; <BR>} <BR>f = f.caller; <BR>} <BR>} <BR>} <BR>sx.event.relativetarget=function(){ <BR>if(window.event){ <BR>if(window.event.type=="mouseover" ){ <BR>return window.event.fromElement; <BR>}else if(window.event.type=="mouseout"){ <BR>return window.event.toElement; <BR>} <BR>}else{ <BR>var f=arguments.callee.caller; <BR>while (f) { <BR>if (f.arguments[0] instanceof Event) { <BR>return f.arguments[0].popularTarget; <BR>} <BR>f = f.caller; <BR>} <BR>} <BR>} <BR>sx.event.stopevent=function(){ <BR>if (window.event) { <BR>window.event.returnValue=false; <BR>window.event.cancelBubble=true; <BR>}else{ <BR>var f=arguments.callee.caller; <BR>while(f){ <BR>if(f.arguments[0] instanceof Event){ <BR>break; <BR>} <BR>f=f.caller; <BR>} <BR>f.arguments[0].preventDefault(); <BR>f.arguments[0].stopPropagation(); <BR>} <BR>} <BR>sx.event.addevent=function(e,t,f){ <BR>if(!arguments.callee.event){ <BR>arguments.callee.event=[] ; <BR>} <BR>if(e.attachEvent){ <BR>e.attachEvent("on" t,f); <BR>}else{ <BR>e.addEventListener(t,f,false); <BR>} <BR>arguments.callee.event.push(f); <BR>return argument.callee.event.length-1; <BR>} <BR>sx.event.removeevent=function(e,t,i){ <BR>if(e.detachEvent){ <BR>e.detachEvent("on" t,sx.event.addevent.イベント[i]); <BR>}else{ <BR>e.removeEventListener(t,sx.event.addevent.event[i],false); <BR>} <BR>sx.event.addevent.event[i]=null; <BR>} <BR>sx.event.parseevent=function(e,t){ <BR>if (sx.comm.ver=="ie"){ <BR>e.fireEvent("on" t); <BR>}else{ <BR>var evt = document.createEvent("イベント"); <BR>evt.initEvent(t, true, true); <BR>e.dispatchEvent(evt); <BR>} <BR>} <BR>sx.dom={}; <BR>sx.dom.text=function(e){ <BR>return this.e.innerText?this.e.innerText:this.e.innerHTML.replace(//<.*?/>/igm 、「」); <br>} <br>sx.dom.elementnodes=function(e,flag){ <br>var temp=[]; <br>var a=e.childNodes; <br>for(var i=0;i<a.length>if(a[i].nodeType==flag){ <br>temp.push(a[i]); <br>} <br>} <br>温度を返します。 <br>} <br>sx.dom.elementallnodes=function(e,flag){ <br>var temp=[]; <br>var a=e.getElementsByTagName("*"); <br>for(var i=0;i<a.length>if(a[i].nodeType==flag){ <br>temp.push(a[i]); <br>} <br>} <br>温度を返します。 <br>} <br>sx.dom.xpath=function(e,mode){ <br>p=e.cloneNode(true); <br>var s=p.getElementsByTagName("スクリプト"); <br>for(var i=0;i<s.length>p.replaceChild(s[i].cloneNode(false),s[i]); <br>var html=p.outerHTML.replace(//=(?!"|')(.*?)(?=/s|>)/ig,"=/"$1/""); <br>if(window.ActiveXObject){ <br>var x=new ActiveXObject("Msxml2.DOMDocument"); <br>x.async=false; <br>x.loadXML("<?xml version=/" 1.0/" エンコーディング=/"gb2312/" ?> html); <br>}else{ <br>var oParser = new DOMParser(); <br>var x = oParser.parseFromString(html,"text/xml"); <br>//alert(x.documentElement.tagName) <br>var div=x.selectNodes(mode); (div.length); <br>var temp=[]; <br>var a1=x.selectNodes(e.tagName.toUpperCase() "//*"); ; <br>var all=e.getElementsByTagName("*"); <br>var i1=0; ;i ){ <br>//alert(i); <br>if(a1[i]==div[i1]){ <br>temp.push(all[i]); 🎜>} <br>} <br>x=null; <br>戻り温度; <br>sx.dom.left=function(e){ <br>if(document.getBoundingClientRect){ <br>return e.getBoundingClientRect().left; <br>}else{ <br>var a=e; <br>while(a){ <br>left =a.offsetLeft; 🎜>a=a.offsetParent; <br>} <br>左に戻る; <br>} <br>} <br>sx.dom.top = function(e){ <br>if(document.getBoundingClientRect){ <br>return e.getBoundingClientRect().top; <br>}else{ <br>var a=e; <br>varトップ=0; <br>while(a){ <br>top =a.offsetTop; <br>a=a.offsetParent; <br>} <br>トップに戻る; <br>} <br>} <br>sx.dom.getstyle=function(e,prop){ <br>if(e.currentStyle){ <br>return e.currentStyle[prop]; <br>}else{ <br>return document.defaultView.getComputedStyle(e,null).getPropertyValue(prop); <br>} <br>} <br>sx.dom.setstyle=function(e,data){ <br>for(var i in data){ <br>e.style[i]=data[i]; <br>} <br>} <br>advance.js: <br>var $=function(id){ <br>return document.getElementById(id); <br>} <br><br> <br><br>edit.js<br>: <br><br><br><br><br>复制代<br><br></s.length></a.length></a.length> </div> 代以下のように:<br><div class="codebody" id="code32274"> <br>var w=$("content").contentWindow; <br>w.document.designMode="on"; <br>w.document.open(); <br>w.document.write("<html><body bgcolor='white'></body></body>") <br>w.document.close(); <br>if(sx.comm.ver=="ie"){ <br>//w.document.body.style.lineHeight="10px"; <br>} <br>w.document.onkeydown=function(){ <br>if(sx.comm.ver=="ie"){ <br>if(w.event.keyCode==13){ <br>var s=w.document.selection.createRange(); <br>s.pasteHTML("<br/>"); <br>w.focus(); <br> false を返します。 <br>} <br>} <br>} <br>function wnd(){ <br>var main=document.createElement("div"); <br>sx.dom.setstyle(main,{ <br>position:"absolute", <br>width:"100%", <br>height:"100%", <br>backgroundColor:"lightblue", <br>フィルター:"alpha(opacity=50)", <br>opacity:0.5 <br>}); <br>var body=document.createElement("div"); <br>sx.dom.setstyle(body,{ <br>position:"absolute", <br>width:"200px", <br>height:"250px", <br>backgroundColor:"green", <br>zIndex:1000 <br>}); <br>var title=document.createElement("div"); <br>sx.dom.setstyle(title,{ <br>width:"200px", <br>height:"20px", <br>backgroundColor:"blue", <br>}); <br>var close=document.createElement("span"); <br>sx.dom.setstyle(close,{ <br>marginLeft:"180px", <br>display:"block", <br>width:"20px", <br>height:"20px", <br>textAlign:"センター", <br>カーソル:"ポインター" <br>}); <br>close.innerHTML="X"; <br>close.onclick=function(){ <br>main.parentNode.removeChild(main); <br>body.parentNode.removeChild(body); <br>} <br>title.appendChild(close); <br>body.appendChild(タイトル); <br>var content=document.createElement("div"); <br>sx.dom.setstyle(content,{ <br>width:"200px", <br>height:"230px" <br>}); <br>body.appendChild(コンテンツ); <br>this.show=function(e){ <br>document.body.appendChild(main); <br>sx.dom.setstyle(main,{ <br>top:"0px", <br>left:"0px" <br>}); <br>document.body.appendChild(body); <br>sx.dom.setstyle(body,{ <br>top:sx.dom.top(e) e.clientHeight "px", <br>left:sx.dom.left(e) e.clientWidth "px "、<br>}); <br>} <br>this.close=close; <br>this.main=メイン; <br>this.body=body; <br>this.title=タイトル; <br>this.content=コンテンツ; <br>} <br>function PDF(){ <br>w.document.execCommand("bold",null,null); <br>} <br>function italic(){ <br>w.document.execCommand("italic",null,null); <br>} <br>function left(){ <br>w.document.execCommand("JustifyLeft",null,null); <br>} <br>function center(){ <br>w.document.execCommand("Justifycenter",null,null); <br>} <br>function right(){ <br>w.document.execCommand("Justifyright",null,null); <br>} <br>function FontName(value){ <br>w.document.execCommand("FontName", false, value); <br>} <br>function FontSize(value){ <br>w.document.execCommand("FontSize", false, value); <br>} <br>function inserthr(){ <br>if(document.selection){ <br>w.focus(); <br>var s=w.document.selection.createRange(); <br>s.pasteHTML("<hr>"); <br>}else{ <br>w.focus(); <br>var s=w.getSelection().getRangeAt(0); <br>s.insertNode(w.document.createElement("hr")); <br>} <br>} <br>function insertlink(){ <br>if (document.selection) { <br>w.focus(); <br>var s = w.document.selection.createRange(); <br>} <br>else { <br>w.focus(); <br>var s = w.getSelection().getRangeAt(0); <br>} <br>var e=sx.event.target(); <br>var ww=new wnd(); <br>ww.content.appendChild(document.createTextNode("请输入链接地址;")); <br>var link=document.createElement("input"); <br>link.type="テキスト"; <br>リンク.サイズ=20; <br>ww.content.appendChild(リンク); <br>var b=document.createElement("ボタン"); <br>b.innerHTML="确定"; <br>ww.content.appendChild(b); <br>b.onclick=function(){ <br>if(sx.comm.ver=="ie"){ <br>s.pasteHTML("<a href='" link.value "'> " s.htmlText "</a>"); <br>} <br>else{ <br>var a=w.document.createElement("a"); <br>a.href=link.value; <br>s.surroundContents(a); <br>} <br>sx.event.parseevent(ww.close,"click"); <br>} <br>ww.show(e); <br>} <br>function inserttable(){ <br>if (document.selection) { <br>w.focus(); <br>var s = w.document.selection.createRange(); <br>} <br>else { <br>w.focus(); <br>var s = w.getSelection().getRangeAt(0); <br>}<br>var e=sx.event.target(); <br>var ww=new wnd(); <br>ww.content.appendChild(document.createTextNode("请输入行数;")); <br>var tr=document.createElement("input"); <br>tr.type="テキスト"; <br>tr.size=20; <br>ww.content.appendChild(tr); <br>ww.content.appendChild(document.createElement("br")); <br>ww.content.appendChild(document.createTextNode("请输入列数;")); <br>var td=document.createElement("input"); <br>td.type="テキスト"; <br>td.size=20; <br>ww.content.appendChild(td); <br>ww.content.appendChild(document.createElement("br")); <br>ww.content.appendChild(document.createTextNode("请输入单元格高;")); <br>var height=document.createElement("input"); <br>高さ.type="テキスト"; <br>高さ.サイズ=20; <br>ww.content.appendChild(高さ); <br>ww.content.appendChild(document.createElement("br")); <br>ww.content.appendChild(document.createTextNode("请输入单元格宽度;")); <br>var width=document.createElement("input"); <br>width.type="テキスト"; <br>width.size=20; <br>ww.content.appendChild(width); <br>ww.content.appendChild(document.createElement("br")); <br>var b=document.createElement("ボタン"); <br>b.innerHTML="确定"; <br>ww.content.appendChild(b); <br>b.onclick=function(){ <br>var l1=Number(tr.value); <br>var l2=数値(td.value); <br>var h1=数値(高さ.値); <br>var w1=数値(幅.値); <br>ww.content.appendChild(document.createTextNode("请输入单元格高;")); <br>var t=document.createElement("テーブル"); <br>t.border="1"; <br>var tb=document.createElement("tbody"); <br>t.appendChild(tb); <br>for(var i=0;i<l1>var tr1=document.createElement("tr"); <br>for(var i1=0;i1<l2>var td1=document.createElement("td"); <br>td1.innerHTML=""; <br>sx.dom.setstyle(td1,{ <br>width:w1 "px", <br>height:h1 "px" <br>}); <br>tr1.appendChild(td1); <br>} <br>tb.appendChild(tr1); <br>} <br>if(sx.comm.ver=="ie"){ <br>s.pasteHTML(t.outerHTML); <br>} <br>else{ <br>s.insertNode(t); <br>s.insertNode(document.createElement("br")); <br>} <br>sx.event.parseevent(ww.close,"click"); <br>} <br>ww.show(e); <br>} <br>function color(){ <br>var e=sx.event.target(); <br>if (document.selection) { <br>w.focus(); <br>var s = w.document.selection.createRange(); <br>} <br>else { <br>w.focus(); <br>var s = w.getSelection().getRangeAt(0); <br>} <br>var ww=new wnd(); <br>var Colors = ["00","33","66","99","CC","FF"]; <br>var cp=document.createElement("span"); <br>sx.dom.setstyle(cp,{ <br>display:"inline-block", <br>width:"10px", <br>height:"10px", <br>margin:"2px" <br>}); <br>for(var i1=5;i1>=0;i1--){ <br>for(var i2=5;i2>=0;i2--){ <br>for(var i3=5; i3>=0;i3--){ <br>var cp1=cp.cloneNode(true); <br>cp1.style.backgroundColor="#" カラー[i1] カラー[i2] カラー[i3]; <br>cp1.title="#" カラー[i1] カラー[i2] カラー[i3]; <br>cp1.onclick=function(){ <br>if(sx.comm.ver=="ie"){ <br>w.focus(); <br>s.pasteHTML("<font color='" this.title "'>" s.htmlText "</font>"); <br>} <br>else{ <br>var a=w.document.createElement("font"); <br>a.color=this.title; <br>s.surroundContents(a); <br>} <br>sx.event.parseevent(ww.close,"click"); <br>} <br>ww.content.appendChild(cp1); <br>} <br>} <br>} <br>ww.show(e); <br>} <br></l2></l1> </div> <br>关键是demo.html和edit.js里の代码,core.jsおよびadvance.js里の代码是我是兼容浏览器写的,本想把它扩展<br> <br> このプロセッサには、サーバー技術が必要なため、画像やファイルの上向き転送が実現されていません。 <br> 私たちは Web の公開を計算し、vc を中心に探求を開始し、できるだけ画像サンプルを書き込むことができるプログラムを完成させ、その後、時間があれば、このブラウザーと JavaScript 互換性を継続的に実行するつもりです。 <br>恩、好んで油を加えます。