1

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

<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:

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

4

8 回答 8

2

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

于 2009-06-27T22:45:41.967 回答
2

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

于 2009-06-28T07:09:27.943 回答
2

就像 Jacob 建议的那样,您应该检查它是否没有被阻止。去做这个:

  • 右键单击您的页面
  • 在上下文菜单中选择“阻止内容...”
  • 在屏幕顶部,单击“详细信息...”按钮
  • 您应该会看到当前页面上被阻止的 URL
于 2009-06-28T07:38:13.003 回答
1

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

在这里查看我的答案以获取解决方法:

Opera 不会加载一些 JavaScript 文件

于 2012-03-23T09:41:32.643 回答
1

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

事实证明,该脚本是用 UTF-16 编码的,这在某种程度上使浏览器感到困惑。当我将其转换为 UTF-8 时,一切正常。

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

于 2009-10-25T13:55:05.823 回答
1

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

于 2009-06-27T22:31:48.967 回答
1

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

此外,text/javascript当涉及到 JavaScript 时,mime 类型实际上是错误的,实际的 JavaScript mime 类型是application/ecmascript(如果我没记错的话,可能是application/javascript这样)。如果你不相信我,你应该看看这里我有更多信息并链接到 Douglas Crockfords 视频,他在那里讨论了哑剧类型。

于 2009-06-27T22:51:19.613 回答
1

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

于 2010-10-20T15:18:14.197 回答