考虑以下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小部件代码,另一个异步脚本只添加一个&#34;对象&#34;标记到DOM。让上述文件由网络服务器提供(您可以使用jsFiddle:http://fiddle.jshell.net/V9jtD/show/)。在Firebug激活的MacOSX Firefox 15+中打开它。
您将多次重复看到以下错误:
TypeError: non-native scope object
如果错误不显示,只需刷新页面即可。并且主要是Zopim无法显示(有时出现功能不完整)。我无法在Firefox / Ubuntu中重现这一点。 (它可能在Firefox / Windows中可重现,我无法检查)。
但是,在以下情况下,Zopim加载正常:
我基本上想了解导致错误的原因,以便我可以对其进行调试。
是Firebug,因为停用它Zopim工作正常吗?但是,在启用Firebug的情况下删除第二个脚本标记不会导致错误。
它是第二个脚本标记,因为删除它Zopim工作正常吗?但是,即使使用第二个脚本标记,停用Firebug和Zopim也能正常工作。
或者是Zopim本身?
请注意,第二个脚本标记中的内容是swfobject.js中函数testPlayerVersion()的一部分。当我尝试将Zopim添加到已经有swfobject的页面时,我遇到了这个错误。
答案 0 :(得分:0)
如果小提琴没有从Zopim加载缩小的JS,可能会更容易解决,但违规行(大致美化)是:
try {
(0)()
} catch (v) {
s = v.arguments ?
'chrome' : v.stack ?
'firefox' : window.opera && !('stacktrace' in v) ?
'opera' : 'other'
}
这看起来像是一种检测浏览器的hacky方式。我不确定为什么它会导致Firebug保释,如果它可以重现,可能值得提出问题。