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

时间:2015-12-10 11:52:14

标签: javascript jquery localhost

基本上我有一个需要动态加载内容的网站 - 特别是区域设置。我需要对我的网站提供多语言支持,所以一般的想法是我有一个查询参数,例如?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服务器上运行时有效。将它作为文件运行(这是我需要做的)我得到了这个:

&#34; XMLHttpRequest无法加载file://...english.js?_ = 1449747918242。交叉源请求仅支持协议方案:http,数据,chrome,chrome-extension,https,chrome-extension-resource。&#34; AND &#34;未捕获的TypeError:无法读取属性&#39; home&#39;未定义&#34;

我试图使用纯粹的javascript,这会给出&#34; Uncaught TypeError:无法读取属性&#39; home&#39;未定义&#34;:

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

有关如何进行的任何建议?我现在一直在尝试各种潜在的解决方案,但似乎没有任何效果。

1 个答案:

答案 0 :(得分:0)

与以下问题相关:

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

修正:

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

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