通过使用Chrome开发者工具中的时间轴,我使用了这一小段代码来通过 innerHTML 记录事件:
<!DOCTYPE html>
<html>
<head>
<script>
function test(){
var wrap = document.getElementById('wrapper');
wrap.innerHTML = "test";
}
</script>
</head>
<body>
<input type="button" value="click" onClick="test();"/>
<div id="wrapper"></div>
</body>
</html>
我可以看到,一旦运行测试方法,就会触发两个解析事件:
我正在使用Chrome版本23.0.1271.64 m
有什么期望吗?是Chrome开发者工具中的错误吗?还是在Chrome下有什么需要改进的地方?
最佳答案
经过一番尝试之后,我猜想这与Chrome有关,需要先解析字符串“test”,然后重新解析页面,或者可能只是解析添加字符串后的“wrap”元素。 innerHTML是一个奇怪的函数,因为它允许添加任何内容,因此必须进行一些验证/解析。
这有点说明,如果您将功能更改为此:
function test() {
var wrap = document.getElementById('wrapper');
var newtext = document.createTextNode("test");
wrap.appendChild(newtext);
}
...那么根本就不会发生解析事件。
关于javascript - 为什么单击设置innerHTML会在Chrome上触发两个解析事件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13335999/