2014-11-05 98 views
1

刪除參數我有這個網址:的Greasemonkey腳本從URL

http://website.com/wp-content/uploads/2014/11/this-is-an-image_0120(pp_w820_h548).jpg 

我想刪除的URL參數,看起來像這樣:

http://website.com/wp-content/uploads/2014/11/this-is-an-image_0120.jpg 

怎麼可能與Greasemonkey的?

var links = document.getElementsByTagName("a"); 
for(var i = 0, l = links.length; i < l; i++) { 
    var elements = links[i]; 
    elements.innerHTML = document.body.innerHTML.replace(/(pp_w820_h548)/gi, ''); 
} 

我也想要寬度和高度的數字將是未知的變量。有時候圖像是PNG,所以刪除之後的所有內容(並且將「.jpg」再次添加到最終解決方案中並不是最佳解決方案。)

SORRY!我的意思是針對img元素,而不是a。 ,不是鏈接

也很PP需要在那裏,因爲我只是想刪除的prophoto WP博客

所以,這是它:

var links = document.getElementsByTagName("img"); 
for(var i = 0, l = links.length; i < l; i++) { 
    var images = links[i]; 
    images.src= images.src.replace(/\(pp_w\d+_h\d+\)/gi, ''); 
} 

UPDATE

該腳本僅適用於靠近視口的圖像。 Lazyloaded網頁上的元素仍然使用url中的加號字符串。

Greasemonkey是否可以通過物理方式更改HTML,而不僅僅是在DOM中?

+0

至於正則表達式:你需要轉義'('和')'。數字寫成'[0-9] +'通過使用反斜槓('\')'\(轉義括號)完成轉義 – andlrc 2014-11-05 16:12:07

+0

@ user1442219你是什麼意思改變html不只是dom html *是* dom。它從一開始就取代了圖像源,是否正確?您可以隨時添加超時作爲最簡單的解決方案 – 2014-11-11 15:45:28

回答

2
var links = document.getElementsByTagName("a"); 
for(var i = 0, l = links.length; i < l; i++) { 
    var a = links[i]; 
    a.href= a.href.replace(/\(pp_w\d+_h\d+\)/gi, ''); 
} 

例子:http://jsfiddle.net/houp0qv0/

+0

對不起,我的意思是針對img元素,而不是a。再次抱歉! – Lanti 2014-11-05 16:36:08

1

如果你真的不知道發生了什麼事情是括號內(例如,如果pp_前綴可能會改變),你可以使用:

var links = document.getElementsByTagName("img"); 
for(var i = 0, l = links.length; i < l; i++) { 
    var link = links[i]; 
    link.src = link.src.replace(/\(.+\)/gi, ''); 
} 

甚至:

link.src = link.src.replace(/\([a-zA-Z\d]+_[a-zA-Z\d]+_[a-zA-Z\d]+\)/gi, '');