簡體   English   中英

使用vanilla Javascript和regex更改所有鏈接,href,網址

[英]Change ALL links, hrefs,urls with vanilla Javascript & regex

我試圖使用一些vanilla Javascript替換整個頁面上的url值。 我不能使用任何庫/框架。 這是我到目前為止已經放置在標簽之間每頁頂部的內容:

<script type="text/javascript">
function change_url() {
    var str = '';
    str = str.replace(/blog\.domain\.info/g, 'blogtest\.domain\.info');
}
change_url();
</script>

但是,當頁面加載時,這不起作用。

基本上,我需要資源鏈接從http://blog.domain.infohttp://blogtest.domain.info 簡單的任務,我知道! 但是上面的代碼到目前為止還沒有工作。

關於改變什么的建議?

閱讀完評論后,你需要一些類似的東西

function replace_url(elem, attr) {
    var elems = document.getElementsByTagName(elem);
    for (var i = 0; i < elems.length; i++)
        elems[i][attr] = elems[i][attr].replace('blog.domain.info', 'blogtest.domain.info');
}

window.onload = function() {
    replace_url('a', 'href');
    replace_url('img', 'src');
    // etc
}

如果您要定位鏈接,則可以執行以下操作:

<script type="text/javascript">
    var els = document.getElementsByTagName('a'),
        len = els.length;

    while( len-- ) {
        els[len].hostname = els[len].hostname.replace('blog.domain.info','blogtest.domain.info');
    }
</script>

將此腳本放在結束</body>標記內。

對於其他標記,請指定要更新的標記名稱和屬性。

嗯,這是非常困難的,因為如何讓標題中的項目在遇到之前進行更改? 如果你可以強迫你的JS在加載之前運行,也許,但我懷疑它。 您可以進行后加載,查找條目,重寫它們並異步加載它們,但代碼可能會錯過初始化事件。 它會變得復雜。

可以使用其他答案提到的getElementsByTagName()方法來解決元素。 這適用於src/href更改,但不會處理CSS圖像,特別是background-image ,這可能發生在很多元素上。 然后就是這類事情附加在課堂上的問題,這將需要搜索課程條目,這是一個痛苦。 我懷疑改變像RSS feed,favicons等元信息會在后期加載后生效。

真的可以更好地處理服務器端。

我對派對來說太晚了,但希望這有助於其他人。

你的代碼是完美的,它只需要處理文本和一種方式來反饋它,這就是我要做的事情,請注意,我不是一個專家只是一個小提琴手。

<script type="text/javascript">
//added “str” as a function input/parameter
function change_url(str) {
    /* removed this
    var str = ''; */
    /* changed this
    str = 
    to this */
    return str.replace(/blog\.domain\.info/g, 'blogtest\.domain\.info');
}
//and called it like this
document.onload = function(){
    document.getElementsByTagName('head')[0].outerHTML = change_url(document.getElementsByTagName('head')[0].outerHTML);
}
</script>

如果您想要更改整個文檔的所有引用,那么就像這樣調用它。

document.onload = function(){
    document.getElementsByTagName('head')[0].outerHTML = change_url(document.getElementsByTagName('head')[0].outerHTML);
    document.getElementsByTagName('body')[0].outerHTML = change_url(document.getElementsByTagName('body')[0].outerHTML);
}

這將改變對src,href,img中的blog.domain.info的所有引用,以及在!! TEXT !!中找到的任何實例。 所以要小心使用它,因為所有前面提到的參考文獻都將被更改。 ; O)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM