Opera:无法加载 .js 文件

Opera: .js file won't load

提问人:Eli 提问时间:6/28/2009 最后编辑:Eli 更新时间:3/23/2012 访问量:3729

问:

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

<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域上的多个路径,并且它无法从该域的任何地方工作。

这让我相信问题在于,由于某种原因,Opera 无法或不会从该域加载脚本。

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

域已注册,但已停放。我们在本地对其进行了DNS,因此我们可以将其用于暂存/测试,这可能会以某种方式与Opera的JS安全性混淆。

不过我可能是错的——我真的不知道。如果其他人有,我很想听听。

更新2:

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

更新3:

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

JavaScript 跨浏览器 Opera

评论

0赞 jitter 6/28/2009
应该走什么样的路......脚本.js是?你的意思是像“../script.js“还是什么?

答:

1赞 miguelSantirso 6/28/2009 #1

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

评论

0赞 joebert 6/28/2009
我必须同意。我经常使用 Opera,偶尔我的电源会闪烁到足以重置我的路由器。发生这种情况时,我必须将系统拔下/重新插入路由器,以便系统重新建立连接,让 Opera 连接到我的路由器之外的任何内容<br><br> 这是我唯一一个迫使我这样做的浏览器。
2赞 Jacob 6/28/2009 #2

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

评论

0赞 Eli 6/28/2009
嗯,可能就是这样。不过,我没有看到任何设置。我一定会看一看 - 谢谢你的想法!
1赞 Aaron Powell 6/28/2009 #3

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

此外,当涉及到 JavaScript 时,MIME 类型实际上是错误的,实际的 JavaScript MIME 类型是(如果我没记错的话,可能是)。如果你不相信我,你应该看看这里,我有更多信息,并链接到道格拉斯·克罗克福德(Douglas Crockfords)的视频,他在视频中讨论了哑剧类型。text/javascriptapplication/ecmascriptapplication/javascript

评论

0赞 Eli 6/28/2009
我将不得不对此进行调查。我不认为这是导致这个特定问题的原因(见上面的编辑),但我一定会检查并开始使用正确的 mime。谢谢!
2赞 Darryl Hein 6/28/2009 #4

你检查过 Opera 的错误控制台吗?高级>错误控制台>工具 它应该提供有关为什么它不会加载或是否存在某种其他错误的信息。

评论

0赞 Eli 6/29/2009
我有。它根本没有说明开发人员工具中的脚本。对于脚本中应该存在的变量和函数,它有很多未定义的变量错误,但除此之外,没有错误。奇怪的是,它在 DOM 中显示了脚本标签,但是如果我单击“脚本”选项卡,它会显示“未找到脚本”。
0赞 Darryl Hein 6/29/2009
您是否尝试过删除除文件中可能发出的警报之外的所有内容,以查看文件是否有问题?
2赞 Tommy Carlier 6/28/2009 #5

就像 Jacob 建议的那样,您应该检查它是否没有被阻止。为此,请执行以下操作:

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

评论

0赞 Eli 6/29/2009
谢谢 - 好主意。不过没有什么被阻止的。
1赞 marius 10/25/2009 #6

我最近有类似的事情 - opera 不会在外部服务器上运行脚本......如果我下载了它并将其放在 localhost 上,我也不会这样做。它仅在脚本标记之间复制/粘贴到 html 页面时运行。

事实证明,该脚本是用 UTF-16 编码的,这在某种程度上混淆了浏览器。当我将其转换为 UTF-8 时,一切运行良好。

因此,以防万一,如果您仍然遇到该问题,请查看编码设置......

评论

0赞 Eli 10/26/2009
我会的,谢谢!我已经把这个项目搁置了一段时间,但很快就会启动它,并且必须对其进行测试。
1赞 LU. 10/20/2010 #7

我遇到了完全相同的问题,将脚本从 localhost/开发服务器加载到托管在公共服务器上的页面中,但无济于事。我管理脚本在 Opera 中加载的唯一方法是将页面的副本保存到同一开发服务器上的某个位置,并使用标签引用原始域以获取页面的 .css 和 .js 链接文件。这奏效了。看起来 Opera 不喜欢混合使用公共域和 localhost 域,但处理 localhost 时没有抱怨。

1赞 hallvors 3/23/2012 #8

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

请看我的答案 这里 解决方法:

Opera 无法加载某些 JavaScript 文件