Greasemonkey脚本从URL中删除参数

时间:2014-11-05 16:10:16

标签: javascript wordpress greasemonkey

我有这个网址:

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

我想从网址中删除一个参数,如下所示:

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,所以删除后的所有内容(,并添加&#34; .jpg&#34;再次到最后不是最佳解决方案。

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, '');
}

更新

该脚本仅适用于靠近视口的图像。页面上的延迟元素仍使用url中的加号字符串。

Greasemonkey是否可以通过phisically改变HTML,而不仅仅是在DOM中?

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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, '');