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