[英]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.info到http://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.