如何制作一个HTML / JS所见即所得的编辑器?
我已经尝试了许多不同的Googlesearch,但是我一直无法find当前的教程(比2006年更新)如何实际创build所见即所得的编辑器。 我意识到已经有很多了,但我很好奇他们是如何工作的。 我已经看了一些源代码,但要消化很多东西。 我想知道是否有人可以描述他们的工作原理? 也就是说,似乎格式化的文本不能放置在一个textarea框中,但他们却给出了这样做的幻想 – 怎么样?
Javascript所见即所得的编辑器不使用textarea(至less不是外部的,可能在幕后有一个textarea填充构成WYSIWYG内容的代码,以便它可以在表单中发布)。
相反,有两个属性用于在网页中创build可编辑区域:应用于整个文档的designMode
或应用于特定元素的contentEditable
。 这两个属性最初是微软的创新,但已被所有主stream浏览器采用( contentEditable
现在是HTML5的一部分)。
一旦一个文档(就富文本编辑器而言,这通常意味着embedded一个设置了您的页面的designMode的iframe)或元素是可编辑的,格式化是通过使用execCommand
方法完成的(为此有许多不同的模式 – 粗体,斜体等等 – 在所有的浏览器中不一定是相同的,更多的信息见下表 )。
为了将内容从可编辑元素传递到服务器,通常将可编辑元素的innerHTML
加载到发布的textarea中。 HTML生成的结构取决于浏览器。
资源 :
我有一个好主意,拿这个代码做一个很酷的所见即所得的编辑器 –
为了编写一个好的编辑器,我用JavaScript编写了一个代码,它将打开一个包含结果 –
让我们从Body-
<body> <textarea style="height:400px;width:750px;overflow:auto;"onblur="x=this.value"></textarea> <br /> <button onclick="ShowResult()">see result!</button> </body>
现在我们继续使用JavaScript-
function ShowResult() { my_window = window.open("about:blank", "mywindow1"); //By the above line code we have opened a new window my_window.document.write(x); //Here we have added the value of the textarea to the new window }
我们来看整个代码:
<html> <script type="text/javascript"> function ShowResult() { my_window = window.open("about:blank", "mywindow1"); my_window.document.write(x); } </script> <body> <textarea style="height:400px;width:750px;overflow:auto;" onblur="x=this.value"> </textarea><br /> <button onclick="ShowResult()">see result!</button> </body> </html>
如果我能以任何方式帮助你,我很高兴做到这一点。
感谢您提出这个问题,并提高我对JavaScript的好奇心。
基本上他们隐藏你的textarea,并将iframe作为编辑器字段。 他们捕捉你的input(文本+格式化),并将相应的HTML写入iframe。 如果您提交包括原始文本区域的表单,则会将iframe的内容复制到textarea中,并因此提交html代码。
那么,这是相当简单的。