javascript - Firebug 中神秘的 "Type Error: non-native scope object"

标签 javascript macos firefox firebug swfobject

考虑以下 HTML:

<!DOCTYPE html>
<html>
<body>
Test page

<!--Start of Zopim Live Chat Script-->
<script type="text/javascript">
window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s=
d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set.
_.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute('charset','utf-8');
$.src='//cdn.zopim.com/?pTR0FiicfJ4aMcmuHI9HfVAB4uzKeFIT';z.t=+new Date;$.
type='text/javascript';e.parentNode.insertBefore($,e)})(document,'script');
</script>
<!--End of Zopim Live Chat Script-->

<script type="text/javascript" async="">
window.addEventListener('load', function() {
    var b = document.getElementsByTagName("body")[0];
    var o = document.createElement("object");
    o.setAttribute("type", "application/x-shockwave-flash");
    var t = b.appendChild(o);
});
</script>
</body>
</html>

jsFiddle在这里:http://jsfiddle.net/V9jtD/

它包含 Zopim 小部件代码,这是另一个异步脚本,仅向 DOM 添加“对象”标签。让上述文件由网络服务器提供服务(您可以使用 jsFiddle: http://fiddle.jshell.net/V9jtD/show/ )。在激活 Firebug 的 MacOSX Firefox 15+ 中打开它。

您将看到以下错误重复多次:

TypeError: non-native scope object

如果错误没有出现,只需刷新页面即可。主要是 Zopim 无法显示(有时显示功能不完整)。我无法在 Firefox/Ubuntu 中重现这一点。 (它可能在 Firefox/Windows 中重现,我无法检查)。

但是,在以下情况下,Zopim 可以正常加载:

  1. 注释掉“var t = b.appendChild(o);” (即,不要将“object”标签附加到 DOM,或者您可以完全删除第二个脚本标签)。
  2. 停用 Firebug。

我本质上想了解是谁导致了错误,以便我可以对其进行调试。

是 Firebug,因为停用 Zopim 可以正常工作吗?但是,在启用 Firebug 的情况下删除第二个脚本标记不会导致错误。

这是第二个脚本标签吗,因为删除它 Zopim 可以正常工作吗?但随后停用 Firebug,即使使用第二个脚本标记,Zopim 也能正常工作。

还是 Zopim 本身?

请注意,第二个脚本标签中的内容是 swfobject.js 中函数 testPlayerVersion() 的一部分。当我尝试将 Zopim 添加到已有 swfobject 的页面时,我遇到了此错误。

最佳答案

如果 fiddle 没有从 Zopim 加载缩小的 JS,那么可能会更容易解决,但有问题的行(粗略美化)是:

try {
    (0)()
} catch (v) {
    s = v.arguments ?
        'chrome' : v.stack ?
        'firefox' : window.opera && !('stacktrace' in v) ?
        'opera' : 'other'
}

这看起来像是一种检测浏览器的狡猾方法。我不确定为什么它会导致 Firebug 退出,如果可以重现,可能值得向他们提出问题。

关于javascript - Firebug 中神秘的 "Type Error: non-native scope object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14007062/

相关文章:

javascript - jQuery 中的循环

objective-c - 在 MAC 10.3.9 Cocoa 中解析和写入 XML?

http - Firefox 在加载一个网站时总是显示旋转轮,没有内容出现

javascript - Firefox 中鼠标悬停时的声音

javascript - 带有日语文件名的音频文件无法在 Firefox 中播放

javascript - 如何将 CSS 样式应用到自定义 React 组件

javascript - 禁用html中的文本框?

javascript - 文本区域线条检测

objective-c - 如何使用 Objective-C 查找附近的 wifi 网络及其 IP 地址

macos - 在VirtualBox Windows 7上运行OSX MAMP测试服务器