alert()有时会导致Chrome出错

时间:2015-08-06 22:23:36

标签: javascript google-chrome

我曾经使用alert()进行调试,当我在JavaScript / jQuery中编写一些代码行时(我知道,它是糟糕的样式)。我现在在Google Chrome中看到一种奇怪的行为。

HTML

    <html>
    <head>
        <script src="my_script.js"></script>
    </head>
    <body>
    <p>Test</p>
    </body>
    </html>

my_script.js

这很简单。

    alert("hello world");

错误

当我加载页面时,它通常可以正常工作,但是当我重新加载页面有时时,Google Chrome中会出现以下错误:

  

未捕获的TypeError:无法读取属性&#39; impl&#39;未定义的扩展名:: messaging:184

通过多次测试,我发现了

  • alert()窗口按预期显示
  • 错误不是每次都会发生,有时会发生
  • 发生错误(发生时)关闭alert()窗口后
  • 如果我等待关闭alert()窗口或两次重新加载之间似乎不会发生错误

错误消息指向此代码段:

  // In case the extension never invokes the responseCallback, and also
  // doesn't keep a reference to it, we need to clean up the port. Do
  // so by attaching to the garbage collection of the responseCallback
  // using some native hackery.
  messagingNatives.BindToGC(responseCallback, function() {
    if (port) {
      privates(port).impl.destroy_();
      port = null;
    }
  });

但我甚至无法确定哪个文件受到了严重影响,以及放置在哪个文件夹中。

谷歌刚刚发现另一个明显相同错误的描述: https://teamtreehouse.com/forum/anyone-else-getting-error-cannot-read-property-impl-of-undefined

本页的作者认为,错误仅在某些时候发生的事实表明异步进程存在问题,有时重新加载页面时无法完成。

我通过切换到使用console.log()来解决我的调试任务。但我非常感兴趣的是错误究竟发生了什么,以及如何通过使用alert()函数来避免它返回我糟糕的调试方式。

1 个答案:

答案 0 :(得分:0)

嘿(:我在这个论坛中找到了你的问题的可能解释(https://teamtreehouse.com/forum/anyone-else-getting-error-cannot-read-property-impl-of-undefined)。我引用:'未定义在访问属性impl之前被返回。由于它是间歇性发生的,这表明我privates(port)是一个异步操作 - 允许其他代码继续执行 - 有时私有将在访问属性impl之前完成,有时它不会。'结束引用。即使它只是一个猜测我发现它是理性的< / p>