【发布时间】: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