2014-09-01 51 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>'