2014-09-28 102 views
0

我有一個字符串到腳本的路徑:如何在不執行的情況下加載腳本內容?

var path = 'some_script.js'; 

它可以是遠程路徑,相對或絕對的,來自相同或不同來源:

var path = 'http://path.to/some/another_script.js'; 

我試圖找到一種方法來加載沒有執行的給定path的腳本,並將其作爲字符串獲取。

我試圖用無效類型script爲了以後有一些DOM函數獲取其內容:

var s = document.createElement('script'); 
s.src = path; 
s.type = "text/broken"; 
// s.type = "text/javascript"; 

document.getElementsByTagName('head')[0].appendChild(s); 

但是,在這種情況下,腳本甚至沒有(至少在鉻)加載。如果我將其類型更改爲"text/javascript",則該腳本已加載,但立即執行。

有什麼方法可以在沒有執行的情況下加載腳本並獲取其內容?

+0

因此,讓一個Ajax請求並獲取文件。 – epascarello 2014-09-28 12:40:47

+0

thx,將嘗試這樣做.. – asvd 2014-09-28 12:53:03

回答

4

你正在尋找一個正常的AJAX調用,它是這樣的:

function reqListener() { 
    console.log(this.responseText); 
} 
var oReq = new XMLHttpRequest(); 
oReq.onload = reqListener; 
oReq.open("get", path, true); 
oReq.send(); 

如果你使用jQuery,你這樣做,而不是:

$.get(path, function(data) { 
    console.log(data); 
}); 
+1

OP提到從不同的域獲取數據,所以應該注意的是,只有當源域願意合作並提供適當的CORS頭時,這纔會起作用。 – Pointy 2014-09-28 12:58:23

+0

但通過'script'標籤加載正常腳本不需要來自另一個來源的服務器的任何特殊合作,對吧?這意味着要麼你加載腳本**和**執行它,或者你不能加載它..有點我認爲 – asvd 2014-09-28 20:23:36

+0

我認爲沒有正確的CORS頭你可能無法加載腳本即使在'script'標籤中也是另一個域名。這個限制是由瀏覽器強加的,所以它可能會限制某些類型的跨站點內容而不是其他的內容。 – gandaliter 2014-09-28 23:34:07

相關問題