繁体   English   中英

Greasemonkey脚本从URL中删除参数

[英]Greasemonkey script to remove parameters from 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”到最后不是最佳解决方案。

抱歉! 我的意思是针对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

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

Greasemonkey是否有可能在物理上改变HTML,而不仅仅是在DOM中?

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/

如果你真的不知道括号内会是什么(例如,如果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, '');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM