2015-12-10 58 views
0

基本上我有一個需要動態加載內容的網站 - 特別是語言環境。我需要爲我的網站提供多語言支持,所以一般的想法是我有一個查詢參數,如?language = english和english將被附加到標題,以便抓取正確的數據用於我的網頁。因此,像:附加腳本SRC導致跨源請求錯誤

//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,數據,chrome,chrome擴展,https,chrome擴展資源。「 「遺漏的類型錯誤:無法讀取的未定義的屬性‘家’」

我試圖使用純JavaScript,這一點讓「遺漏的類型錯誤:無法讀取屬性未定義的‘家’」:

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

關於如何進行的任何建議?我一直在嘗試各種可能的解決方案,現在似乎沒有任何工作。

+1

'文件://'...鉻不喜歡'file'協議做類似的東西 –

+0

好你所要說的是,你想從網頁上運行的本地文件從外部服務器實至名歸?你爲什麼不把你包含的腳本放在服務器上? –

+0

jQuery有一個處理HTML字符串的系統。該系統與添加腳本不兼容。它有一個使用Ajax的解決方法。這違反了跨域請求。純JavaScript工作應該解決它,但你需要比「導致問題」更具體。 – Quentin

回答

0

相關的問題:

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

修正了:

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

jQuery的似乎有關於使非HTTP請求的文件在同一個域的問題。