考虑以下 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 可以正常加载:
- 注释掉“var t = b.appendChild(o);” (即不要将“对象”标签附加到 DOM,或者您可以完全删除第二个脚本标签)。
- 停用萤火虫。
我本质上想了解是谁导致了错误,以便调试它。
是 Firebug,因为停用它 Zopim 可以正常工作吗?但是在启用 Firebug 的情况下删除第二个脚本标记不会导致错误。
它是第二个脚本标签,因为删除它 Zopim 工作正常吗?但随后停用 Firebug 和 Zopim 即使使用第二个脚本标签也能正常工作。
还是 Zopim 本身?
请注意,第二个脚本标记中的内容是 swfobject.js 中函数 testPlayerVersion() 的一部分。当我试图将 Zopim 添加到已经有 swfobject 的页面时,我遇到了这个错误。