2014-11-05 102 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, '');