我正在尝试在应用程序中实现所见即所得,它们都使用 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
, body
和head
元素,并且您的主页已经有了这些。它正在将其剥离,因为您试图将它们插入到不允许的位置。
您要么必须将它们完全删除,然后在编辑元素内容后将它们添加回来,要么将整个所见即所得编辑器放入 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/