javascript - 你能阻止innerHTML删除HTML、HEAD、BODY元素吗?

标签 javascript jquery html

我正在尝试在应用程序中实现所见即所得,它们都使用 contentEditable 这很酷,直到我将整个 html 文档放入文本框中。每个所见即所得都使用 html()innerHTML 来移动内容以及这些 strip 、 和 标签...

html = "<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>Title</title>
  </head>
  <body>
    <span>Hey There</span>
  </body>
  </html>
  "

editable.innerHTML = html
editable.innerHTML
// => "
  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
  <title>Title</title>
  <span>Hey There</span>
"

同样的事情也发生在 $(editable).html() 上。我找不到与此相关的规范。

做什么?

最佳答案

一个 HTML 文档只能有一个 html , bodyhead元素,并且您的主页已经有了这些。它正在将其剥离,因为您试图将它们插入到不允许的位置。

您要么必须将它们完全删除,然后在编辑元素内容后将它们添加回来,要么将整个所见即所得编辑器放入 iframe 中。元素,以便您可以使用整个 iframe 文档而不是单个元素。

它已记录在案,但您需要知道自己在寻找什么。请参阅 <body> MDN 上的文档:

Permitted parent elements: It must be the second element of an element.

以及 <html> 的文档:

Permitted parent elements: As the root element of a document, or wherever a subdocument fragment is allowed in a compound document.

关于javascript - 你能阻止innerHTML删除HTML、HEAD、BODY元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28422121/

相关文章:

php - 提交后如何让消息出现在弹出窗口中而不是在不同的页面上

javascript - 如何使用 JavaScript/JQuery 在客户端本地创建文本文件

javascript - Bluebird 取消等待

javascript - jQuery .click() 不适用于 setInterval

Javascript:如何用箭头键控制模拟光标以定位 DOM 编辑?

javascript - 显示/隐藏特定的 div

javascript - IronRouter 获取布局中的数据

javascript - Chart.js 向 X 轴和 Y 轴添加方向箭头

javascript - 带有包含图像特定文本的单独 div 的 jQuery 幻灯片

jquery - Select2 不起作用,始终显示 "No results found"