2011-12-01 74 views
0

我正在尋找一個JavaScript解決方案來查找HTML頁面上的所有jQuery腳本,並用最新版本的jQuery替換代碼。如何用javascript查找/替換html?

原線路:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

替換:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script> 
+2

爲什麼在前端做到這一點? –

+0

取而代之?你不能修改代碼而不是用jQuery改變jQuery庫嗎? –

+3

請注意,許多事情自1.3以來發生了變化。它可能會中斷,這些版本不完全兼容 –

回答

0
var all = document.querySelectorAll('script[src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"]'), 
script; 
for(var i=0, len = all.length; i < len; i++){ 
    script = all[i].cloneNode(false); 
    script.src = "http://code.jquery.com/jquery-1.7.1.js"; 
    document.body.removeChild(all[i]); 
    document.body.appendChild(script); 
} 

這對我很有用。您可以在this demo中看到它,但您必須在控制檯中鍵入命令$.fn.jquery才能看到版本實際已更改。

+0

您可以證明源已經改變了所有你想要的,但它不會真正運行加載的腳本。 –

+0

@Nathan謝謝。不知道。修復。 –

-1

像記事本編輯++或任何其他高級源代碼編輯器打開你的項目的源代碼。在所有可用的源文件中搜索文本「1.3.2/jquery.min.js」(通過遞歸搜索項目的根目錄)。檢查是否需要替換所有出現的字符串,然後使用查找/替換工具將其更改爲最新版本。

+1

他想用JavaScript來做到這一點。 (奇怪,但是,這就是他要求的。) –

+0

我明白解決方案有多簡單。不幸的是,這是不可能的。我真的在尋找JavaScript解決方案。 –

+0

我明白,對不起。 – TFennis

2

大多數人寫的例子都不行! (例如已被刪除。)jQuery().jquery返回了jQuery版本:

$("script[src='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js']") 
    .attr("src","http://code.jquery.com/jquery-1.7.1.js"); 
console.log(jQuery().jquery); 

這寫1.3.2控制檯。只需更改腳本的src就不會使新腳本實際運行!即使您給新腳本加載setTimeout或加載事件,它仍然不會更改版本。

您可以將腳本作爲AJAX查詢加載,並將其作爲eval加載。

jQuery.getScript("http://code.jquery.com/jquery-1.7.1.js"); 

但即使這樣可能不會產生您期望的結果。對頁面下方的jQuery$的任何引用都將指向舊的jQuery對象(版本1.3.2),而不是新的。所以要使用1.7.2,那麼只有在獲得新腳本後才需要eval所有腳本。所以你必須找到另一種我害怕的方式。

編輯:我想你可以這樣做:

jQuery.getScript("http://code.jquery.com/jquery-1.7.1.js", function() { 
    // Only after jQuery has run 
    jQuery.getScript('my-script-which-depends-on-1.7.js'); 
}); 

但它是一個有點麻煩。