HTML/JAVASCRIPT:在contentEditable = true中禁用HTML内容

前端之家收集整理的这篇文章主要介绍了HTML/JAVASCRIPT:在contentEditable = true中禁用HTML内容前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要的是?

我想要一个像textarea一样工作的div,我不希望能够在div中编辑东西,并粘贴图像等等纯文本.

www.facebook.com
– 最好的例子是facebook的新闻源.

为什么我需要这种方式?

如果您查看Facebook的新闻源,您可以看到您可以撰写帖子的区域,在您撰写帖子或进行大量输入时进行扩展.

这就是为什么我想使用带有contentEditable的div的原因,因为在textarea中我不能这样做.
#

请不要只是JAVERY JAVASCRIPT

解决方法

使用纯JavaScript而不使用框架的可调整大小的Textarea:
  1. <html>
  2. <head>
  3. <script>
  4. function taOnInput()
  5. {
  6. var dis = this;
  7. setTimeout(
  8. function(){
  9. var span = document.createElement("div");
  10. span.innerHTML = escape(dis.value).replace(/[%]0A/g,"<br/>")+"<br/>."; //Extra BR for padding... TextArea uses %0A,not \n
  11. span.style.width = dis.offsetWidth+"px";
  12. span.style.padding = "0px";
  13. span.style.fontFamily = "Lucida Console";
  14. document.body.appendChild(span); //Offset height doesnt work when not in DOM tree i guess =/? or is it a hack
  15. dis.style.height = span.offsetHeight+"px";
  16. document.body.removeChild(span);
  17. },1
  18. ); //setTimeout=hack,since oKP is called BEFORE character append.
  19. }
  20. window.onload = function()
  21. {
  22. var resizableTA = document.getElementById("resizableTA");
  23. resizableTA.onkeypress = taOnInput;
  24. }
  25. </script>
  26. <title>ItzWarty - Untitled Document</title>
  27. </head>
  28. <body>
  29. <textarea id="resizableTA">Trololololol</textarea>
  30. </body>
  31. </html>

非常hackish,在不到10分钟内把它放在一起.希望它至少能给你一个想法.

仅在Google Chrome 5.0.308.0上测试过

代码解释,因为我在评论时失败了
1)在window.onload之前,已创建id为“resizableTA”的textarea并将其附加到DOM树的document.body.
2)window.onload附加一个事件处理程序,taOnInput [输入上的textarea].
3)输入上的textarea创建一个虚拟跨度,将其宽度强制为textarea的宽度,并将字体样式强制为“Lucida Console”,其中AFAIK是textareas的默认字体,将textarea的值复制到span的innerHTML,同时替换
[textareas使用的换行符]和[换行符] …
4)span的offsetHeight是跨度的高度,现在可用于强制textarea的高度.

任何人都可以确认Lucida Console是textarea的默认字体吗?是Consola?快递新?我假设任何固定宽度的字体都可以.我不使用Mac,所以我不知道它与windows共享的字体,不过我认为Courier New是更好的选择……

猜你在找的HTML相关文章