Javascript Firefox中document.write()的不平衡树

Javascript Firefox中document.write()的不平衡树,javascript,firefox,Javascript,Firefox,据我所知,这是Firefox中投机执行的一个问题。以下是整个html演示文件: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Foo</title> </head> <body> <script language="JavaScript" type="text/javascript

据我所知,这是Firefox中投机执行的一个问题。以下是整个html演示文件:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Foo</title>
  </head>

  <body>
    <script language="JavaScript" type="text/javascript">

document.write("<table>")
document.write("<tbody>")
document.write("<tr>")
document.write("<td>")
document.write("<textarea rows='10' cols='12'>")
document.write("</textarea>")
document.write("</td>")
document.write("</tr>")
document.write("</tbody>")
document.write("</table>")

    </script>
  </body>
</html>

我不相信我在写一棵不平衡的树。有人能提出一个简单的方法来避免这种情况吗?

为什么不调用document.write只写一次?像这样:

document.write("<table><tbody><tr><td><textarea rows='10' cols='12'></textarea></td></tr></tbody></table>");
document.write(“”);
或者,如果要保留特征线,可以使用反斜杠:

document.write("<table>\
<tbody>\
<tr>\
<td>\
<textarea rows='10' cols='12'>\
</textarea>\
</td>\
</tr>\
</tbody>\
</table>");
document.write(“\
\
\
\
\
\
\
\
\
");
编辑: 上述解决方案无法解决问题,因此,如果你只是将其放入体内:

document.documentElement.innerHTML = "<table>\
<tbody>\
<tr>\
<td>\
<textarea rows='10' cols='12'>\
</textarea>\
</td>\
</tr>\
</tbody>\
</table>";
document.documentElement.innerHTML=”\
\
\
\
\
\
\
\
\
";

看起来这是一个与
textarea
内部
表格
完全相关的特例

table
本身不会引起问题,
textarea
inside
div
也不会引起问题,
textarea
notinside
table
也不会引起问题

可能在某种程度上与
textarea
内容的特定处理有关(例如。 g、 与常规元素相比,即使像
这样的特殊字符没有通过像
/
)这样的实体转义,也将标记显示为文本


摆脱
document.write()
调用的一个相对简单的方法是创建一个数组(例如。 g、
parts
)在使用
document.write()
的代码之前,将所有
document.write()
调用替换为
parts.push()
,然后将
parts.join(“”)
分配给整个容器的
innerHTML
属性。

不要使用
文档。write
,请参阅中的警告。请改用DOM方法。控制台是否指示是哪一行导致了问题?如果您在一个
document.write()语句中编写所有html,您还会遇到问题吗?在我看来,仅仅是不使用
document.write()
是这里的解决方案…document.createElement?无法告诉你为什么
表中的
textarea
似乎会这样做,
文档。write(“”
也会这样做,但你可能听说
文档。write
是邪恶的,只是不要使用它。在我的测试中,控制台中会产生相同的警告。我尝试了这个,但没有任何区别。即使只调用一次
document.write
,问题仍然存在。@AlexanderO'Mara你说得对。我认为这个错误是由多次调用write函数引起的。但是我带来了一个解决方案,检查编辑。这是一个有趣的方法,但我认为我没有一个方便的表锚定点。它是正在生成的较长html列表的一部分。除了这一个带有
textarea
标记的地方之外,它不会导致任何问题。我只是不明白这个案子有什么特别之处。
document.documentElement.innerHTML = "<table>\
<tbody>\
<tr>\
<td>\
<textarea rows='10' cols='12'>\
</textarea>\
</td>\
</tr>\
</tbody>\
</table>";