仅限于Firefox浏览器,“Loading failed for the <script> with source”错误。

112

我想在Yii框架上将Marketo表单集成到我的现有网站中。 我的代码在除Firefox以外的所有浏览器上都可以正常工作。

来自我的代码片段:

    $('#button').click(function () {
    var formData = {
        'Email': $('#UserInfo_email').val(),
        'FirstName': $('#UserInfo_first_name').val(),
        'LastName': $('#UserInfo_last_name').val(),
        };
    MktoForms2.loadForm('//app-ab23.marketo.com', mcId, formId, function (form) {
        var myForm = MktoForms2.allForms()[0];
        myForm.addHiddenFields(formData);
        myForm.onSuccess(function (values, followUpUrl) {
            return false;
        });
        myForm.submit();
    });
});

我只在Firefox上遇到错误,错误信息如下:

无法加载带有源“http://app-ab23.marketo.com/index.php/form/getForm?munchkinId=1111&form=1111&url=http%3A%2F%2Fblox.dev%2Fwizard%2Fmap&callback=jQuery110207175825035737486_1503656391790&_=1503656391791”的<script>。

其他浏览器正常工作。

注意:这里更改了munchkinId和formId以便发布。


是的,我刷新了浏览器,当将URL复制/粘贴到另一个选项卡时,它会加载内容。 - Narek Tootikian
在同一浏览器中打开另一个标签页可以吗? - ScaisEdge
2
我的意思是在控制台中显示加载失败的URL,在另一个选项卡中加载,但页面本身无法正常工作。 - Narek Tootikian
我在尝试包含Google广告时遇到了这个错误。禁用广告拦截器是不够的,因为Firefox会自行阻止一些链接。在最近的Firefox版本中,如果它认为某个域名是广告,则需要将链接托管域和链接本身的域名都加入白名单。一旦我将JS链接的托管域添加到白名单中,Firefox就允许它了。 - Cerin
1
还可以尝试在开发者控制台中打开网络选项卡,并查找状态码大于等于400的请求。 - sihaya
显示剩余10条评论
19个回答

173

我刚在一个加载相对路径脚本的应用程序上遇到了同样的问题。

看起来该脚本只是被Adblock Plus所阻止了。

尝试禁用您的广告/脚本拦截器(如Adblock、uBlock Origin、Privacy Badger...),或者重新定位脚本,使其不符合您的广告拦截器规则。

如果您没有安装这样的插件,请尝试在Firefox安全模式下运行并重现此问题。

  • 如果您无法在安全模式下重现该问题,则说明您的问题与您的某个插件或设置相关。
  • 否则,可能是其他问题。确保您的错误消息与问题中的相同。还可以查看开发人员工具的网络选项卡,检查您的脚本是否已列出(如果需要,请先重新加载页面)。

7
兄弟,这怎么会有人想得出来呢?-_- - linusg
1
@linusg 我不记得具体是什么了,但我知道我在开发工具的网络选项卡中查看过,并感到困惑,因为这个脚本根本没有任何东西,尽管其他脚本都已加载。肯定有什么东西在前面阻止它。 - Didier L
52
如果这些工具在控制台上报告阻止信息会很好。 - R. Schreurs
3
我必须禁用 Privacy Badger 才能加载 cdn.datatables.net。 - Andrew Gaul
1
@nchopra 感觉就像昨天一样。 - Didier L
显示剩余17条评论

18

我刚遇到了同样的问题 - 对我来说,Firefox上的Privacy Badger是问题所在,而不是广告拦截器。为后人留下记录。


2
我遇到了完全相同的问题。Privacy Badger似乎阻止了DataTables CDN。 - MikeHoss

9
我注意到在Firefox中,当请求被中止(切换页面或快速刷新页面)时可能会发生这种情况,但即使我尝试重现错误也很难。其他可能的原因:与证书相关的问题cert,以及这个blockers(正如其他答案所述)。

5
今天我在处理渐进式Web应用程序(PWA)页面时遇到了相同的问题,并从Firefox中删除了该页面的缓存和服务工作器数据。开发者控制台报告该页面上的4个Javascript文件都无法加载。问题在安全模式下仍然存在,因此不是附加组件问题。相同的脚本文件从同一网站的其他网页中加载正常。清除Firefox缓存或擦除Firefox中的网页数据都不能解决问题,重启Windows 10 PC也没有帮助。在问题页面上,Chrome始终运行良好。最终,我从一天前的备份中恢复了整个Firefox配置文件夹,问题立即消失,所以这不是我的PWA应用程序的问题。显然,Firefox中的某些内容已经损坏。

5

我曾经遇到过同样的问题(尽管是不同的web应用程序)并出现了错误消息,结果发现是.mime.types文件内.js文件的MIME类型为text/x-js而不是application/javascript,这是由于服务器上mime.types有重复条目所致,该服务器负责提供js文件。如果设置了头部信息X-Content-Type-Options: nosniff,这似乎会导致Firefox(和Chrome)阻止js文件的内容。


3
如上所述,这可能是您的浏览器扩展程序的问题。请禁用所有扩展程序,包括Adblock,然后再尝试加载代码,因为在我的浏览器(Google Chrome - 最新版)中代码可以正常加载,所以这可能是您的问题。另外,您是否尝试过其他浏览器,比如震颤IE?Adblock已知会与包含trackmarket的域名发生冲突,作为一个普遍规则。尝试使用隐私浏览模式安全模式

我尝试了你建议的所有可能的方法。我唯一想到的是JavaScript引擎。一定有一些微小的东西导致了这个问题。 - Narek Tootikian
那一定是Firefox的某个功能,去Bugzilla开一个工单吧。 - user9016207
在我的情况下,我使用的是DuckDuckGo隐私要点插件,在私人模式下也会阻止被视为跟踪器的脚本。然而,网络选项卡会告诉你这一点。 - Anna Kleiner

2

我遇到了同样的问题(完全相同的错误信息),经过几个小时的搜索,我发现内容头需要设置为application/javascript而不是我原来使用的application/json。更改后,现在它可以正常运行。


1
如果您提到了内容头部,即标签在哪里,那将非常有用,但是现在这个回复并没有什么用。 - Andrew S
@AndrewS 这取决于你使用的编程语言。当我遇到这个问题时,我正在使用PHP,所以最终在脚本响应中添加了 header("Content-Type: application/javascript");。基本上,我的动态JS代码返回了错误的头部信息。由于某种原因,默认情况下是 application/json。希望这可以帮到你。 - Aziz Saleh

2

VPN有时也会导致这种错误,如果它们提供某种类型的自动阻止功能。禁用VPN可以解决我的问题。


1

我遇到了同样的情况,脚本在安全模式下正确加载。然而,禁用所有附加组件和其他Firefox安全功能没有帮助。我尝试过一件事情,这是我的解决方案,就是临时从开发者窗口禁用此特定请求的缓存。在我看到这是原因之后,我清除了该站点的缓存,一切都开始正常工作。


1
我在使用火狐浏览器时遇到了同样的问题,当我搜索解决方案时没有得到任何结果。但是当我尝试从CDN中加载脚本时,它正常工作了。 因此,如果您正在尝试加载您未创建的脚本,我认为您应该尝试从CDN链接中加载它,因为在我的情况下,当我尝试加载自己的脚本时,它成功地导入了。目前我不知道原因,但我认为网络脚本中有些问题,所以只需尝试CDN,您不会失去任何东西。 希望对您有所帮助。

请向读者解释什么是 CDN 链接,这样您可能会获得更多的赞同。 - Andrew S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接