Javascript 为什么onclick侦听器提供不同的输出?
这是一个我无法破解的坚果。考虑下面的HTML正文:Javascript 为什么onclick侦听器提供不同的输出?,javascript,html,safari,dom-events,Javascript,Html,Safari,Dom Events,这是一个我无法破解的坚果。考虑下面的HTML正文: <body onload="console.debug(document.documentElement);"> <a href="#" onclick="console.debug(document.documentElement);">Click me</a> </body> 在Safari上的Inspector控制台中,第一条调试语句的输出和第二条调试语句的输出(单击链接时激发
<body onload="console.debug(document.documentElement);">
<a href="#" onclick="console.debug(document.documentElement);">Click me</a>
</body>
在Safari上的Inspector控制台中,第一条调试语句的输出和第二条调试语句的输出(单击链接时激发)不同。单击链接后,两个输出如下所示:
> HTMLHtmlElement
> <html>...</html>
>HTMLHtmlElement
> ...
两者都是可扩展的,但第一个元素看起来更像是一个适当的DOM元素及其所有细节(原型、事件侦听器、子关系和父关系等),而第二个元素仅将元素及其子元素显示为HTML
Firefox中Firebug控制台中给出的输出没有区别,每个输出只链接到HTML检查器。这可能是safari中的一个错误,因为Firefox和IE9都给出相同的输出 如果它真的存在bug,您可以报告bug:
或者这是引擎中的一个差异。显然,第一个脚本是在文档完全解析之前内联运行的。也许
HTMLHtmlElement
是Safari在完成构建DOM之前使用的占位符对象?该错误(如果是)也会发生在Chrome中,但在重新打开控制台时会自行更正。[Chrome最新开发]。事实上,如果你用这个刷新页面,有时你会得到HTMLHtmlElement,有时你会得到标记。如果你用一个按钮而不是一个标记,这有什么不同吗菲利普:如果我没记错,结果是一样的。如果它也发生在Chrome中,那可能是Webkit中的一个“bug”。我怀疑我会称之为bug,它可能只是解析器的一个实现细节。