我发现 Chrome 和 Firefox 之间的行为存在奇怪的差异,我想知道是否有人知道发生了什么。
首先,代码(参见http://jsfiddle.net/pXgaE/1/以获取实时示例):
HTML:
<input id='me' onchange='func()' />
Javascript:
function func() {
console.log( "resetting" );
document.getElementById( 'me' ).parentNode.innerHTML = "test";
}
在 Firefox 中,如果我在字段中输入内容并点击“输入”,则日志消息会出现一次。另一方面,在 Chrome 中,日志消息出现两次。
Chrome 的事件处理有什么不同(错误?)?
旁白:不,我也不太喜欢这段代码,我更愿意更明智地重写它。但我真的很好奇在幕后发生了什么可以解释这一点。
编辑:出于某种原因,每次关闭输入标签都会让我感到困惑。它们现在应该正确关闭。另外,仅供参考,我在 Mac 上的 Chrome 30.0.1599.101 以及 Chrome Canary 32.0.1680.0 上都出现了这种行为。
编辑 2:我最初将 innerHTML 设置为另一个输入标签,但我可以通过设置为纯文本来重现这一点。更新 Javascript 和 JSFiddle 链接。