追加脚本SRC导致跨源请求错误

Appending Script SRC Causes Cross Origin Requests Error

本文关键字:请求 错误 脚本 SRC 追加      更新时间:2023-09-26

本质上,我有一个需要动态加载内容的网站,特别是区域设置。我的网站需要多语言支持,所以一般的想法是我有一个查询参数,比如?language=english和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);

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

"无法加载XMLHttpRequestfile://...english.js?_=1449747918242.跨源请求仅支持以下协议方案:http、data、chrome、chrome扩展、https、chrome资源扩展。"AND"未捕获类型错误:无法读取未定义的属性"home"

我尝试使用纯javascript,这给出了"Uncaught TypeError:无法读取未定义的属性'home'":

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

对如何进行有什么建议吗?一天来,我一直在尝试各种潜在的解决方案,但似乎都不起作用。

与相关的问题

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

修复者:

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

jQuery似乎存在对同一域上的文件发出非http请求的问题。