2013-07-30 75 views
3

在加載內容html之前,我需要替換另一個腳本標記<script>的特定腳本標記<script>。我的意思是,我不想加載這個JavaScript,因爲它是廣告。在加載內容之前替換或刪除javascript標記

替換此<script type='text/javascript' src='http://site.net/c/banner_s?tenant=AD&selection=5986&size=728x90&skin=bottom_middle&di=1'></script>

<script type='text/javascript' src='http://newsite...'></script>

否則刪除標記。

這裏是我的代碼,但是這將刪除所有腳本標籤,我想具體的標籤(前面提到過)

function stripScripts(s) { 
    var div = document.createElement('div'); 
    div.innerHTML = s; 
    var scripts = div.getElementsByTagName('script'); 
    var i = scripts.length; 
    while (i--) { 
     scripts[i].parentNode.removeChild(scripts[i]); 
    } 
    return div.innerHTML; 
    } 

alert(
stripScripts('<span><script type="text/javascript">alert(\'foo\');<\/script><\/span>') 
); 

在此先感謝

+1

我編輯了我的問題 –

+0

如果你想刪除單個腳本標記,那麼刪除那裏的while循環,並確定我的正確值(腳本在你的html中的位置),以便刪除那個 – Prash

+1

我不'我相信他知道'我'的正確價值,這就是他問這個問題的原因。 –

回答

2

如何URL的錢你知道嗎?

如果你知道所有的它,它不會改變:

var scripts = document.getElementsByTagName('script'); 
var i = scripts.length; 
while (i--) { 
    if (scripts[i].src === "http://site.net/c/banner_s?tenant=AD&selection=5986&size=728x90&skin=bottom_middle&di=1") { 
    srcipts[i].src = newSrc; // Your source here 
    break; 
    } 
} 

如果你知道一些它不會改變:

var scripts = document.getElementsByTagName('script'); 
var i = scripts.length; 
while (i--) { 
    if (scripts[i].src.indexOf("http://site.net/c/banner_s?...") === 0) { 
    srcipts[i].src = newSrc; // Your source here 
    break; 
    } 
} 

如果整個URL可能會改變,你將希望看看不同的解決方案(ids,頁面上的位置等)。

1

如果這不是服務器端JavaScript,那麼您就是在浪費時間。一旦在頁面中刪除腳本元素是毫無意義的。一旦腳本被加載,它被加載,你不能「卸載」它。沒有辦法導航到新的URL會改變這一點。

替換腳本元素的src同樣毫無意義,您可能還需要加載一個新元素。替換src不會卸載腳本內容(參見上文),它只是刪除元素。

如果要在頁面中加載其他腳本,則必須在服務器上執行該操作。