【发布时间】:2011-09-13 22:37:33
【问题描述】:
我正在为一个网站编写一个用于 Firefox(Greasemonkey)、Opera 和 Chrome 的 Javascript 浏览器插件。问题是,当我将document.innerHTML 加载到变量中时,
<form name="foo" action="foo.php" method="get">
<td id="td">text:
<input name="k" type="text" />
</td>
</form>
...网站上面的原始代码(我正在为其编写插件)转换为
<form name="foo" action="foo.php" method="get">
<td id="td">text:
**<input name="k" type="text">**
</td>
...这个。可以看到,自动关闭的<input /> 标签不再关闭,</form> 标签也消失了。我搜索了几乎所有的互联网,但我阅读的所有解决方案都没有解决我的问题。
【问题讨论】:
-
据我所知,没有办法以这种方式获取原始页面源(或者至少可以保证工作)。当您请求 innerHTML 时,浏览器将为您提供 DOM 元素内容的 HTML 序列化。通过 XMLHTTPRequest 加载页面会起作用,尽管这可能不是您想要的。
-
为什么会出现问题?浏览器如何选择将元素表示为 HTML 标记不应该真正影响任何事情。
<input>元素的本质是它没有后代。缺少/>并没有改变这一点。 -
<input>标签在 HTML 中不必关闭,事实上在 HTML 中自关闭标签在语法上是不正确的。 -
实际上问题是因为 消失了,当我在输入中输入内容并按 enter 时,表单无法正常工作。
标签: javascript html tags innerhtml