【问题标题】:Appending Script SRC Causes Cross Origin Requests Error附加脚本 SRC 导致跨域请求错误
【发布时间】:2015-12-10 11:52:13
【问题描述】:

基本上我有一个需要动态加载内容的网站——特别是语言环境。我的网站需要多语言支持,所以一般的想法是我有一个像 ?language=english 这样的查询参数,然后将英语附加到标题中,以便它获取要在我的网页中使用的正确数据。比如:

//script 1

//getLanguage() gets the specified query parameter, like 'english'
$('head').append('<script src=' + getLanguage() + '.js'></script>');

然后在整个脚本 1 中,我希望:

$('#mainHeader').append(window.i18n['home'].mainHead());

这是定义变量的脚本的英文版:

//english.js

(function(A) {
A.i18n = {
  home: {
    mainHead: function(b) { return 'test123'; },
  }
}
})(this);

这在本地网络服务器上运行时有效。将它作为文件运行(这是我需要做的)我得到了这个:

"XMLHttpRequest 无法加载文件://...english.js?_=1449747918242。跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https、chrome-extension-resource。 " AND“未捕获的 TypeError:无法读取未定义的属性 'home'”

我尝试使用纯 javascript,这给出了“未捕获的类型错误:无法读取未定义的属性 'home'”:

var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= getLanguage() + '.js';
head.appendChild(script);

关于如何进行的任何建议?一天以来,我一直在尝试各种可能的解决方案,但似乎没有任何效果。

【问题讨论】:

  • file:// ... chrome 不喜欢在file 协议中做类似的事情
  • 好的,您的意思是您想从外部服务器应得的网页运行本地文件?你为什么不把你包含的脚本放在服务器上?
  • jQuery 有一个处理 HTML 字符串的系统。该系统与添加脚本不兼容。它有一个使用 Ajax 的解决方法。这会破坏跨域请求。您拥有的纯 JavaScript 工作应该可以解决它,但您需要比“导致问题”更具体。
  • 我想运行一个本地文件,作为网页,调用其他本地文件。

标签: javascript jquery localhost


【解决方案1】:

相关问题:

$('head').append('<script src=' + getLanguage() + '.js></script>');

修正者:

document.write('<' + 'script src=' + getLanguage() + '.js' + ' type="text/javascript"><' + '/script>');

jQuery 似乎存在与向同一域中的文件发出非 http 请求有关的问题。

【讨论】:

    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 2019-01-09
    • 2019-08-05
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多