Opera:.js文件无法加载

时间:2009-06-27 21:35:55

标签: javascript cross-browser opera

我有一个页面调用标题中的脚本,如下所示:

<script type="text/javascript" src="http://www.discoverfire.net/analytics/l/a.js"></script>

(注意,您将无法加载此脚本,因为它在本地作为暂存域进行DNSd)

非常简单。

Firefox,IE,Chrome对这个基本的方形功能都没有问题。

但是,Opera拒绝加载脚本。其中的任何变量或函数都是“未定义的”,在dragonfly中,脚本标记显示在DOM中,但“脚本”选项卡显示“未找到脚本文件。”

我去谷歌并找到随机页面,他们的外部.js文件似乎工作正常。

知道为什么Opera讨厌我吗?我缺少一个安全/ javascript的东西吗?

一些可能相关的事情,但实际上应该没有区别:

  • 该脚本位于与该页面不同的域中。
  • 该脚本仅在我的本地网络上可用。该域在本地DNS用于登台,从网络外部指向其他地方。 Opera是否设置秘密使用外部DNS服务器?
  • 该脚本适用于我拥有的其他所有浏览器。
  • 问题不在脚本内容中。我已将它减少到单行并发出警报,但它在Opera中无效。

更新

好的,问题似乎是Opera如何对待域名。

我已将脚本移动到其他几个域,它的工作正常。我已将其移至本地DNS'd域上的多个路径,并且无法在该域上的任何位置工作。

这让我相信问题是Opera出于某种原因不能或不会从这个域加载脚本。

奇怪的是,从域中加载页面和其他资源似乎没有问题,问题在于.js文件。

域名已注册,但已停放。我们在本地DNS它,所以我们可以用它来进行暂存/测试,这可能会以某种方式搞乱Opera安全性。

我可能错了 - 我真的不知道。如果其他人有一个,我很乐意听到它。

更新2:

关于Dragonfly和错误控制台/开发人员工具,他们根本没有说明任何关于脚本的内容。对于应该在脚本中出现的变量和函数,存在大量未定义变量错误,但除此之外,没有错误。奇怪的是,脚本标记确实显示在DOMM中,但如果我单击“脚本”选项卡,则会显示“找不到脚本”。

更新3:

没有阻止的内容,因此我们至少可以排除该设置。

8 个答案:

答案 0 :(得分:2)

您可能想看看它的广告拦截器是否会妨碍您。您的网址包含文本“analytics”,这可能是“阻止此”模式的一部分。我知道有些通过Opera阻止Google分析。对此的简单测试可能是尝试将.js移动到主机上的不同路径。

答案 1 :(得分:2)

你检查过Opera的错误控制台吗?工具&gt;高级&gt;错误控制台 它应该提供有关它不会加载的原因或者是否存在某种错误的信息。

答案 2 :(得分:2)

像雅各布建议的那样,你应该检查它是否被阻挡。要做到这一点:

  • 右键点击您的信息页
  • 在上下文菜单中选择“阻止内容...”
  • 点击屏幕顶部的“详细信息...”按钮
  • 您应该会看到当前页面上阻止的网址

答案 3 :(得分:1)

你应该在Opera论坛中提问。我过去在Opera中遇到了一些问题,他们很快回答。

答案 4 :(得分:1)

主机是否提供JavaScript文件的正确mime类型。这不是一个众所周知的事实,但浏览器实际上忽略了type=text/javascript属性,因为它信任服务器指定了正确的类型。

另外,当涉及到JavaScript时,text/javascript的mime类型实际上是错误的,实际的JavaScript mime类型是application/ecmascript(如果我没记错的话,它可能是application/javascript)。如果你不相信我,你应该有一个look here我有更多的信息,并链接到道格拉斯Crockfords视频,他讨论了mime类型。

答案 5 :(得分:1)

我最近有类似的东西 - 歌剧不会在外部服务器上运行脚本......也不是我下载并在localhost上运行它。它只在脚本标签之间复制/粘贴到html页面时运行。

原来,该脚本是用UTF-16编码的,这让浏览器感到困惑。当我把它转换成UTF-8时,一切都运行良好。

所以,以防万一,如果你还有这个问题,请查看编码设置......

答案 6 :(得分:1)

我遇到了完全相同的问题,想要将一个脚本从localhost / development服务器加载到一个页面,无法在公共服务器上托管。我在Opera中管理脚本的唯一方法是将页面副本保存到同一开发服务器上的某个位置,并使用标记引用原始域以获取页面的.css和.js链接文件。那很有效。看起来Opera不喜欢混合使用公共域名和localhost域名,但是无需投诉即可处理localhost。

答案 7 :(得分:1)

你所看到的可能是Opera针对所谓的“网络钓鱼”攻击的安全预防措施:跨网络保护。您不能混合来自公共服务器的内容和来自本地服务器的内容。

请在此处查看我的答案以获得解决方法:

Opera won't load some JavaScript files