Javascript 分配innerHTML时是否会发生异常?

Javascript 分配innerHTML时是否会发生异常?,javascript,dom,Javascript,Dom,我通读了一遍,其中声称可能发生SyntaxError dom = document.createElement('div') // output: <div></div> dom.innerHTML = '[try.various.strings.here]' // output: "[try.various.strings.here]" dom // check final DOM dom=document.createElement('div')) //输出: do

我通读了一遍,其中声称可能发生
SyntaxError

dom = document.createElement('div')
// output: <div></div>
dom.innerHTML = '[try.various.strings.here]'
// output: "[try.various.strings.here]"
dom
// check final DOM
dom=document.createElement('div'))
//输出:
dom.innerHTML='[try.variable.strings.here]'
//输出:“[try.variable.strings.here]”
多姆
//检查最终DOM
我试图用
(部分)替换测试字符串,
可能会发生错误

基本上,这取决于内容类型以及浏览器如何提供服务

在传统情况下,它不会抛出错误,但在某些边缘情况下(如或中所示),会触发错误

最好用
try..catch
语句将其包装起来。

TL;博士 规范说,如果浏览器愿意,它可以这样做,但我不认为任何主流浏览器会对HTML做(实际上,我不会对IE9-IE11和某些元素类型做出任何保证)。(而对于XML,它们是

该规范定义了HTML文档的解析规则,无论它们在语法上是否正确。解析算法中的某些点被称为解析错误。解析错误的错误处理是明确定义的(这是本规范中描述的处理规则),但是用户代理在解析HTML文档时,可能会在遇到第一个解析错误时中止解析器,因为他们不希望应用本规范中描述的规则。

(我的重点)

细节 定义
innerHTML
,并说明:

设置时,必须运行以下步骤:

  • 让片段作为调用的结果,使用新值作为标记,上下文对象作为上下文元素
  • 如果上下文对象是模板元素,那么让上下文对象成为模板的模板内容(DocumentFragment)
  • 用上下文对象中的片段替换所有
  • 如果我们遵循片段解析算法链接,我们将得到:

    以下步骤构成片段解析算法,其参数为标记字符串和上下文元素:

  • 如果上下文元素的节点文档是HTML文档:让算法为。
    如果上下文元素的节点文档是XML文档:让算法为
  • 让新的子元素成为调用算法的结果,将标记作为输入,将上下文元素作为上下文元素
  • 假设fragment是一个新的DocumentFragment,其节点文档是上下文元素的节点文档
  • 将新子节点中的每个节点追加到片段(按树顺序)
  • 返回fragment的值

  • 如果我们遵循上面的HTML解析算法链接,我们将获得创建和使用HTML解析器的步骤。如果我们按照链接到HTML解析器的定义,我们将在TL中获得第一个链接;DR和上面引用的文本。

    不过,这只是XML,不是普通的HTML。你能举个例子让HTML在分配
    innerHTML
    时崩溃吗?你能举个例子让HTML在分配innerHTML时崩溃吗?@MoYummy-正如我上面所说:“…但我认为没有哪个主流浏览器会对HTML这样做。”