【问题标题】:Why does onclick listener give different output?为什么 onclick 监听器会给出不同的输出?
【发布时间】:2012-02-15 20:47:33
【问题描述】:

这是一个我无法破解的坚果。考虑以下 HTML 正文:

<body onload="console.debug(document.documentElement);">
    <a href="#" onclick="console.debug(document.documentElement);">Click me</a>
</body>

第一个调试语句的输出和在您单击链接时触发的第二个调试语句的输出在 Safari 的 Inspector 控制台中有所不同。点击链接后,两个输出如下:

> HTMLHtmlElement
> <html>...</html>

两者都是可扩展的,但第一个似乎更像是一个适当的 DOM 元素,其中包含所有细节(原型、事件侦听器、子和父关系等),而第二个仅将元素及其子元素显示为HTML。

在 Firefox 的 Firebug 控制台中给出的输出没有区别,每个输出只链接到 HTML 检查器。

【问题讨论】:

  • 很明显第一个脚本是内联运行的,在文档被完全解析之前。也许HTMLHtmlElement 是Safari 在完成构建DOM 之前使用的占位符对象?
  • 该错误(如果有)也发生在 Chrome 中,但在重新打开控制台时会自行纠正。
  • [Chrome 最新开发]。实际上,如果你用这个刷新页面,有时你会得到 HTMLHtmlElement 其他时候你会得到标记。
  • 如果使用按钮而不是标签会有什么不同
  • Philip:如果我没记错的话,结果是一样的。

标签: javascript html safari dom-events


【解决方案1】:

这可能是 safari 中的一个错误,因为 Firefox 和 IE9 提供相同的输出。

如果真的有问题,你可以报告错误:https://developer.apple.com/bugreporter/

或者是引擎的不同。

【讨论】:

  • 如果它也发生在 Chrome 中,它可能是 Webkit 中的一个“错误”。我怀疑我会称它为错误,它可能只是他们解析器的一个实现细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-05
  • 2016-09-03
  • 2018-07-11
  • 1970-01-01
  • 2021-04-24
  • 2020-12-24
  • 2017-01-21
相关资源
最近更新 更多