2012-04-18 60 views
2

我知道您可以使用「innerHTML」獲取並設置當前頁面中標籤的內容。如何閱讀外部腳本/樣式的內容?

但是,我想知道是否有方法通過相同的方式來閱讀(不執行,但閱讀內容)外部腳本/樣式?類似於

<script id="dScript" src="url.js"></script> 

//in real practice, this returns a blank 
//what i need is to read url.js's contents 
<script> 
    var extScript = document.getElementById('dScript').innerHTML; 
</script> 

在相同的上下文中,LESS CSS如何讀取自定義鏈接表?我知道你可以通過AJAX做到,但我試圖使用腳本加載器加載內容,有效地繞過使用動態標籤的SOP,因此AJAX不存在問題。

+0

它返回空白,因爲它是空白的... – gdoron 2012-04-18 02:39:15

+0

我知道它是空白的。這只是一個例子。我想知道是否有方法以類似的方式讀取外部腳本/表單。 – Joseph 2012-04-18 02:40:37

回答

3

不,這違反了同源策略。這就是爲什麼JSONP執行第三方腳本(它不會讀取它)。

你也許可以用Cross Origin Resource Sharing來做到這一點,但據我所知,這必須是AJAX。

+0

所以它就像我可以應用外部表/執行外部腳本(JSONP /回調風格),但沒有讀取它們? – Joseph 2012-04-18 02:46:01

+1

@約瑟夫,對。 – 2012-04-18 02:46:22

0

我創建了一個代理服務器來完成你正在尋找的任務。該API被稱爲realJS(資源快車異步裝載機)。它異步加載任何你想要的資源,從任何你想要的域名:

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="UTF-8"/> 
     <title>REAL</title> 
     <script data-src="http://realdotjs.appspot.com/loader.html" src="http://realdotjs.appspot.com/script/real.js"></script> 
     <script> 
      window.addEventListener("realJSLoaded", function (realJS) { 
       realJS.load.paths.push("http://code.jquery.com/"); 
       realJS.load("jquery.js", loadScript); 

       function loadScript(script) { 
        // do something with the script 
       } 
      }, false); 
     </script> 
    </head> 
</html> 

只要你想realJS.load.paths您可以添加儘可能多的路徑,它會找到正確的路徑正確的資源。它也支持commonJS模塊標識符和abosolute URL。

可以加載任何類型的文本或二進制文件。但是,您必須處理正確返回的文件。乾杯。 =)