我有这个网址:
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中?
答案 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, '');
}
答案 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, '');