2009-06-27 88 views
1

我有在头调用的脚本,像这样的页面:歌剧:.js文件将不会加载

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

(请注意,您将无法加载这个脚本,因为它是本地DNSd作为分期域)

非常简单。

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

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

我去谷歌和找到随机页面,他们的外部.js文件似乎工作得很好。

任何想法为什么歌剧恨我?有没有我缺少的安全/ JavaScript的东西?

几件事情,可能是相关的,但真的应该没有什么区别:

  • 脚本是比页面不同的域。
  • 该脚本仅适用于本地网络。该域名在本地用于分级,从网络外部指向其他地方。 Opera是否具有秘密使用外部DNS服务器的设置?
  • 该脚本适用于所有其他浏览器。
  • 问题不在脚本内容中。我已经将它简化为一行,并且在Opera中不起作用。

更新:

OK,这个问题似乎是歌剧如何处理领域。

我已经将脚本移动到其他几个域,并且它工作得很好。我已将它移到本地DNS域上的多个路径,并且它不会在该域的任何地方工作。

这使我相信,问题在于Opera无法或无法从某个原因加载该域中的脚本。

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

该域名已注册,但已停放。我们在本地对DNS进行了DNS处理,因此我们可以将它用于分段/测试,这可能会让Opera以某种方式与JS安全性相混淆。

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

更新2:

关于蜻蜓和错误控制台/开发者工具,他们不说对剧本的任何东西。对于脚本中应该存在的变量和函数,有很多未定义的变量错误,但除此之外,没有错误。奇怪的是,脚本标签确实显示在DOMM中,但是如果我点击脚本标签,它会显示“找不到脚本”。

更新3:

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

+0

应...的script.js是什么样的路径?你的意思是像“../script.js”这样的相对路径还是什么? – jitter 2009-06-27 21:40:18

回答

1

你应该问在歌剧院论坛。我以前在Opera上遇到过一些问题,他们很快就回答了。

+0

嘿,好主意。 – Eli 2009-06-27 22:41:29

+0

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

这是我唯一强迫我这样做的浏览器。 – joebert 2009-06-28 06:57:34

2

你可能想看看它的广告拦截器是否阻碍了它。您的网址包含“分析”文字,可能是“阻止此”格式的一部分。我知道一些通过Opera的谷歌分析。一个简单的测试可能是尝试将您的.js移动到主机上的其他路径。

+0

嗯,那可能是。虽然我没有看到任何设置。我一定会看看 - 感谢这个主意! – Eli 2009-06-28 06:42:58

1

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

此外,MIME类型的text/javascript在JavaScript中实际上是错误的,实际的JavaScript MIME类型为application/ecmascript(如果我没记错,它可能是application/javascript)。如果你不相信我,你应该有一个look here,我有更多的信息,并链接到道格拉斯克罗克福德视频,他讨论了MIME类型。

+0

我将不得不考虑这一点。我不认为这是什么原因导致了这个问题(见上面的编辑),但我一定会检查并开始使用正确的哑剧。谢谢! – Eli 2009-06-28 06:44:01

2

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

+0

我有。它根本就没有在开发者工具中对脚本进行任何说明。它有很多未定义的变量错误,这些变量和函数应该来自脚本,但除此之外,没有错误。奇怪的是,它显示DOM中的脚本标签,但是如果我点击脚本选项卡,它会显示“找不到脚本”。 – Eli 2009-06-28 20:51:58

+0

您是否尝试过除去文件中的所有警告,以查看文件是否有问题? – 2009-06-28 22:11:32

2

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

  • 您的网页
  • 选择在上下文菜单
  • 在屏幕的右上角单击“阻止内容”,点击“详细信息”按钮
  • 你应该看到的URL被阻止当前页面
1

我有类似的东西最近对 - 在外部服务器上戏就只是没有运行脚本......也不如果我下载了它,并在它了本地主机。它只在将脚本标签复制/粘贴到html页面时才会运行。

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

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

1

我有相同的问题,追平从本地主机/开发服务器加载脚本插入到页面,在公共服务器上无效。我管理脚本在Opera中加载的唯一方法是将页面副本保存到同一开发服务器上的一个位置,并使用该标记引用原始域以获取页面的.css和.js链接文件。这工作。看起来Opera不喜欢混合公共和本地主机域名,但是没有抱怨地处理本地主机。

1

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

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

Opera won't load some JavaScript files