2014-09-01 49 views
1

我试图用Greasemonkey在飞行中更改网页的URL。如何重新链接/脱机图片网址以指向完整图片?

目标页面有类似的链接:

<a name="217258323" href="http://foobar.net/photo/217258323/?pgid=&amp;gid=4933418&amp;page=0"> 
    <img style="border:1px solid #fff;padding:5px;background:#fff;" 
    height="120" width="160" alt="Gallery pic 1 of 20 pics" border="0" 
    src="http://i.foo.net/images/thumb/52/217/217258323.jpg"> 
</a> 

我想改变他们喜欢:

<a name="217258323" href="http://i.foo.net/images/full/52/217/217258323.jpg"> 
    <img style="border:1px solid #fff;padding:5px;background:#fff;" 
    height="120" width="160" alt="Gallery pic 1 of 20 pics" border="0" 
    src="http://i.foo.net/images/thumb/52/217/217258323.jpg"> 
</a> 

也就是说,我要替换的图像src值的链接href - 但/full/而不是/thumb/

任何示例脚本或示例来实现我想要做的?

回答

0

这是一个标准的图像重新链接/脱钩的问题,你可能会发现几个预制userscripts几乎任何网站。

但是不要试图用正则表达式,that way lies madness(和破碎的脚本)来做到这一点。

下面介绍如何使用DOM方法来重新链接例如:

var thumbImgs = document.querySelectorAll ("a > img[src*='/thumb/']"); 

for (var J = thumbImgs.length-1; J >= 0; --J) { 
    var img  = thumbImgs[J]; 
    var lnkTarg = img.src.replace (/\/thumb\//, "/full/"); 
    var link = img.parentNode; 
    link.href = lnkTarg; 
} 
+0

谢谢!这是完美的。然而,我怎么能点击一个新标签打开链接? – John 2014-09-01 13:28:29

+0

聪明的方法就是中间点击链接。否则,在代码中的'link.href ...'行之后加上'link.target =“_blank”;'。 ''_blank''强制链接在新选项卡中打开(如果您正常设置浏览器首选项)。 – 2014-09-01 21:26:32

+0

再次感谢!这符合我的预期。 :) – John 2014-09-02 10:56:29

0

我想你想这样的事情,

> var s = '<a name="217258323" href="http://foobar.net/photo/217258323/?pgid=&amp;gid=4933418&amp;page=0">\n <img style="border:1px solid #fff;padding:5px;background:#fff;"\n  height="120" width="160" alt="Gallery pic 1 of 20 pics" border="0"\n  src="http://i.foo.net/images/thumb/52/217/217258323.jpg">\n </a>'; 
undefined 
> var f = s.replace(/(href=")[^"]*([\s\S]*?)(src=")([^"]*)([\S\s]+?<\/a>)/g, '$1$4$2$3$4$5'); 
undefined 
> var result = f.replace(/thumb(?=.*thumb)/, 'full'); 
undefined 
> result 
'<a name="217258323" href="http://i.foo.net/images/thumb/52/217/217258323.jpg">\n <img style="border:1px solid #fff;padding:5px;background:#fff;"\n  height="120" width="160" alt="Gallery pic 1 of 20 pics" border="0"\n  src="http://i.foo.net/images/thumb/52/217/217258323.jpg">\n </a>'