2013-11-04 48 views
-2

的文本內容我有一個這樣的腳本:如何獲得一個src腳本

<script type="x-shader/x-vertex" id="vertexShader" src="./Shaders/Phong/vertex_shader"> </script> 

我如何得到它的文本?我想:

console.log($("#vertexShader").text()); 

但我總是得到一個空字符串,不包含在文件中的字符串。我如何獲取文件內容?

+0

失蹤「#」以前只是複製粘貼錯誤,它無論如何都不會工作。 –

回答

3

最簡單的解決辦法是發出AJAX查詢:

var httpRequest = new XMLHttpRequest(); 
httpRequest.onreadystatechange = function() { 
    if (httpRequest.readyState === 4) { 
     if (httpRequest.status === 200) { 
      var scriptContent = httpRequest.responseText; 
      console.log(scriptContent); 
     } 
    } 
}; 
httpRequest.open('GET', document.getElementById('vertexShader').src); 
httpRequest.send(); 

避免jQuery的AJAX功能,因爲它們會自動執行腳本。如果你想拿到劇本的內容,你可以做var url=$("#vertexShader").attr('src');這將讓你的腳本的URL

+0

我必須鏈接超越jQuery的腳本嗎?因爲我仍然得到一個空字符串。 –

+0

@RamyAlZuhouri我編輯了一個新版本(不使用jQuery)。我測試了它,它工作。 –

+0

當然,這個腳本必須在DOM準備好的時候執行,以便找到元素。 –

-1

在CSS選擇器中,要獲取帶有ID的元素,必須用作爲其前綴。像

#vertexShader 

,使其成爲

$('#vertexShader') 
+3

它仍然不會得到外部腳本的內容,因爲標籤本身是空的。 – JJJ

+0

如果標籤爲空,則可能意味着DOM尚未準備好。將你的腳本包裝在$(document).ready(function(){你的代碼在這裏}); –

+1

不,在任何時候它都不會被代碼填滿。 – JJJ

0

$("#vertexShader").Text()將讓你什麼都沒有,因爲劇本是遠程加載:)

。現在,您可以用

var response; 

$.ajax({ 
     type:'GET', 
     url: url, 
     success:function(data){ 
      response=data; 
     } 
    }); 

加載它這將讓你的腳本內容到響應變量

+0

這具有執行腳本的副作用。 –

+0

它呢?爲什麼,我只是把它當作ajax迴應......我不是嗎? –

+0

通過在腳本中放置console.log來嘗試它。 –