【问题标题】:Opera: .js file won't loadOpera:.js 文件不会加载
【发布时间】:2023-03-13 22:03:01
【问题描述】:

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

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

没有被屏蔽的内容,所以我们至少可以排除那个设置。

【问题讨论】:

  • ...script.js 应该是什么样的路径?你的意思是像“../script.js”这样的相对路径还是什么?

标签: javascript cross-browser opera


【解决方案1】:

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

【讨论】:

  • 嗯,可能就是这样。我没有看到任何设置。我一定会看看 - 谢谢你的想法!
【解决方案2】:

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

【讨论】:

  • 我有。它根本没有说明开发人员工具中的脚本。对于脚本中应该存在的变量和函数,它有很多未定义的变量错误,但除此之外,没有错误。奇怪的是,它在 DOM 中显示了脚本标签,但如果我单击“脚本”选项卡,它会显示“未找到脚本”。
  • 您是否尝试过删除所有文件,除了文件中的警告以查看文件是否有问题?
【解决方案3】:

就像 Jacob 建议的那样,您应该检查它是否未被阻止。为此:

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

【讨论】:

  • 谢谢 - 好主意。不过没有被阻止。
【解决方案4】:

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

【讨论】:

  • 我必须同意。我经常使用 Opera,偶尔我的电源会闪烁,刚好足以重置我的路由器。发生这种情况时,我必须将系统拔下/重新插入路由器,以便系统重新建立连接,以使 Opera 连接到我的路由器之外的任何东西。

    这是我唯一拥有的浏览器我来做。
【解决方案5】:

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

另外,text/javascript 的 mime 类型在 JavaScript 中实际上是错误的,实际的 JavaScript mime 类型是 application/ecmascript(如果我没记错的话,它可能是 application/javascript)。如果你不相信我,你应该有一个look here,在那里我可以获得更多信息并链接到 Douglas Crockfords 的视频,他在那里讨论了哑剧类型。

【讨论】:

  • 我必须调查一下。我不认为这是导致此特定问题的原因(请参阅上面的编辑),但我一定会检查并开始使用正确的 mime。谢谢!
【解决方案6】:

我最近遇到了类似的事情——opera 不会在外部服务器上运行脚本......我也不会下载它并在 localhost 上运行它。它仅在脚本标签之间复制/粘贴到 html 页面时运行。

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

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

【讨论】:

  • 我会的,谢谢!我已经将该项目搁置了一段时间,但很快就会启动它,并且必须对其进行测试。
【解决方案7】:

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

【讨论】:

    【解决方案8】:

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

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

    Opera won't load some JavaScript files

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 2018-12-23
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多