【问题标题】:Why does window.performance.timing.domContentLoadedEventStart return 0为什么 window.performance.timing.domContentLoadedEventStart 返回 0
【发布时间】:2018-04-05 00:24:34
【问题描述】:

下面是我的js函数代码。

console.log(window.performance.timing);
console.log(window.performance.timing.domContentLoadedEventStart);

当我通过运行js file 运行上述代码时,window.performance.timing 返回一个object,其中domContentLoadedEventStart 具有一定的价值。但是当我尝试打印 window.performance.timing.domContentLoadedEventStart 时,它返回 0。

不确定发生了什么。谁能给我解释一下。

【问题讨论】:

  • 你是在什么平台上执行代码的?
  • @K_58:通过将 js 文件包含在我的 html 文件中。
  • 您的浏览器是什么版本的?如果您使用的是 Chrome,请通过 chrome://version 进行检查。
  • @K_14:是的。我使用 chrome v61.0.3163.100
  • 请在您的开发者控制台 (F12) 上输入(不要复制粘贴)console.info(JSON.stringify(window.performance.timing), JSON.stringify(window.performance.timing.domContentLoadedEventStart)); 并显示结果。

标签: javascript window-object


【解决方案1】:

window.performance.timing

此属性有一个 PerformanceTiming 对象来描述您的页面。

PerformanceTiming.domContentLoadedEventStart

PerformanceTiming.domContentLoadedEventStart 属性的值表示解析器发送 DOMContentLoaded 事件之前的时刻,以 UNIX 纪元以来的毫秒数为单位。

DOMContentLoaded事件

当初始 HTML 文档完全加载和解析时触发 DOMContentLoaded 事件,无需等待样式表、图像和子框架完成加载。

window.performance.timing.domContentLoadedEventStart之所以给你0

您的脚本是在DOMContentLoaded 事件发生之前执行的,因此解析器发送DOMContentLoaded 事件之前的那一刻,当时是未知的。

为了防止它

为了防止PerformanceTiming.domContentLoadedEventStart变成0,你必须在DOMContentLoaded事件发生后引用它。试试这个:

document.addEventListener("DOMContentLoaded", event => {
    console.info("DOM fully loaded and parsed.");
    console.info(window.performance.timing.domContentLoadedEventStart);
});

或

<script defer src="...">

.

【讨论】:

  • 它在 IE 中抛出错误。 document.addEventListener("DOMContentLoaded", event => {... 的语法错误...但它在其他浏览器中运行良好。带有 'event' 的 Pbm
  • @user2613946 你的IE好像不支持箭头函数。尝试使用function(event) { 而不是event =&gt; {。
猜你喜欢
  • 1970-01-01
  • 2015-06-21
  • 2022-01-23
  • 1970-01-01
  • 2011-03-01
  • 2011-07-01
  • 2011-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多