2011-08-08 30 views
3

如何訪問和更改標記的屬性,特別是src? 這樣的東西可能是:訪問並更改<script>標記的屬性

document.scripts[i].src 

當然,它不工作! 我打算改變這樣說:

document.scripts[i].src += '?ver3' 

在一個循環中爲頁面上的所有腳本。

+3

這聽起來很困難,容易出現問題。你最終的目標是什麼?你想要做什麼? –

+0

這是爲了避免瀏覽器緩存?如果是這樣,我認爲這是一個比這更好的解決方案 – Curt

+0

你真的不想混淆腳本標記中的'scr'屬性。即使你不能「卸載」腳本,我想大多數瀏覽器至少會再次傳輸/加載腳本。 – jAndy

回答

4

你可以使用document.getElementsByTagName('script')得到在頁面中的所有腳本元素。

但是,您發現的任何腳本元素都已經加載了它們的內容,因此要更改它們用於加載內容的URL將會太遲。

如果你想改變URL,你應該在服務器端使用一個解決方案,以便URL到達瀏覽器時被改變。

+0

反正做客戶端?我的意思是應該是什麼? Firefox插件,一些代理服務器(本地)? – z403

2

使用jQuery:

jQuery("script").each(function(){ 
    var old_src = jQuery(this).attr('src'); 
    jQuery(this).attr('src', old_src+'?ver3'); 
}) 

具有良好的老JS:

var scripts = document.getElementsByTagName('script'); 
for (var i=0; i<scripts.length; i++){ 
    var old_src = scripts[i].getAttribute('src'); 
    scripts[i].setAttribute('src', old_src +'?ver3'); 
} 
+1

它不適合我。正如Guffa所說,你不能改變加載腳本的內容。您可以更改「src」屬性,但不會加載新腳本。 – 2011-08-08 10:12:19

0

安裝httpd(Apache)和PHP。 把你的hosts文件(或HOSTS.TXT)這一行:

127.0.0.1 example.com 

編寫一個名爲index.php的一個PHP腳本,放入服務器目錄(/ var/www/html等或一些類似這樣的;取決於組態)。

當您在瀏覽器中加載http://example.com你會被重定向到127.0.0.1(本地服務器)和PHP這個變量$_SERVER["HTTP_HOST"]將被設置爲example.com

得到這個網站(例如使用cURL),改變你想要的(使用字符串函數,正則表達式,DOMDocument,SimpleXML等),併發送修改後的內容給瀏覽器。

就是這樣。 :)