未捕获的参考错误:未定义stLight(仅限Chrome)

时间:2013-04-22 04:16:18

标签: javascript django google-chrome cross-domain

我的网页因此结束:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">var switchTo5x=false;</script>
<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
<script type="text/javascript">
stLight.options({publisher: "ur-24e62f76-1f66-e3aa-1190-c533b729ca11", doNotHash: true, doNotCopy: true, hashAddressBar: false});
</script>
<script type="text/javascript" src="/static/bootstrap/js/bootstrap.js"></script>  
</body>
</html>

在FireFox和Safari中,它表现得很好。在Chrome中:

Uncaught ReferenceError: stLight is not defined nectar-tugg-art:229
(anonymous function)

换句话说,w.sharethis.com/button/buttons.js上的代码无法执行,因此无法定义stLight变量。

该页面是在远程服务器上运行的Django Web应用程序的一部分。在本地保存生成的HTML页面,然后在Chrome中查看,可以正常工作。

此时我被困住了。与跨域安全模型有什么关系?没有任何安全例外。

与其他javascript文件有些奇怪的交互?

静态(生成)代码为here。它不会从Dropbox运行。

6 个答案:

答案 0 :(得分:22)

好的,我想我可能已找到它:该网站在Chrome的隐身(色情)模式下正常运行。所以我强烈怀疑我有一些干扰它的扩展(比如Do Not Track或其他东西)。

EDIT 它是Collusion的“阻止已知跟踪网站”功能。

答案 1 :(得分:8)

就我而言,我发现它是一个名为“Disconnect”的Chrome插件。感谢@SteveBennet的线索。

答案 2 :(得分:4)

在我的情况下,我更换了

<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>

这是通过

<script type="text/javascript" src="https://ws.sharethis.com/button/buttons.js"></script>

ShareThis

答案 3 :(得分:2)

在Magento中没有定义stLight: 这可以通过以下方式解决: <script type="text/javascript"> window.onload = function(){ stLight.options({publisher: "ur-24e62f76-1f66-e3aa-1190-c533b729ca11", doNotHash: true, doNotCopy: true, hashAddressBar: false});} </script>

问题(我认为)是在存在此函数的脚本之后加载的js文件http://w.sharethis.com/button/buttons.js。在我看来,最简单的解决方案是window.onload,可能还有其他很好的解决方案。

答案 4 :(得分:0)

除了其他答案中列出的扩展程序外,这可能是由Ghostery扩展程序引起的。

答案 5 :(得分:0)

如果您在自己的网站上启用了SSL,则可能需要尝试重新编写ShareThis脚本:

<script type="text/javascript" src="https://ws.sharethis.com/button/buttons.js"></script>
<script type="text/javascript">
  stLight.options({
    publisher:'12345',
  });
</script>