2011-03-27 133 views
5

可以通過字符串獲得外部腳本的內容嗎?相當於myInlineScript.textContent的東西?獲取外部腳本的源代碼?

這種情況是,我剛開始進入WebGL和所有的教程,我發現商店着色器爲嵌入式<script type="x-shader/x-foo">標籤。元素本身並不重要,但是 - 着色器是由純字符串創建的。這些很容易通過.textContent從內聯腳本中提取,但我當然更願意將我的代碼與我的標記分開。

是否有一些等價物用於獲取外部腳本的源代碼/內容?對DOM文檔和Google搜索的快速掃描並沒有產生任何啓發。

更新

的WebGL着色是不是一個巨大的問題 - 有一些在Javascript中獲得字符串的方式!但這並不是我唯一遇到過的問題script tags being used to inline non-scripts,並且對更好的方式感到好奇。

回答

2

如果它位於同一個域中,您可以對其執行正常的ajax請求,並將該文件作爲字符串取回。這適用於任何類型的文本文件。

另外,我對WebGL並不熟悉,但是如果着色器位於外部文件中,那麼我認爲「x-shader」腳本類型只是將它們內聯的一種方法。否則,它只是一個你傳遞給某個方法的字符串。所以不要過多地想這個。

+0

是啊,我目前正在將着色器存儲爲[多行字符串](http://stackoverflow.com/questions/1589234/whats-the-cleanest-way-to-write-a-multiline-string-in -javascript)在我的JS,但額外的cruft正在竊聽我。我昨天晚上想到了AJAX並拒絕了它,但今天早上我想不出爲什麼。我會把問題留出一段時間,但這可能是我最終要做的。 – 2011-03-27 16:16:28

+0

您想要來自同一主機上某個外部文件的字符串。這正是AJAX請求的目的。 – 2011-03-27 18:39:44

+0

我特別感興趣的是檢查已經鏈接到頁面中的外部腳本的源代碼。在我的情況下,我可以用AJAX調用替換外部腳本,但在一般情況下,這會導致額外的服務器命中。所以我的問題解決了,但我的好奇心並未得到滿足。 ;-) – 2011-03-28 17:58:57