2010-07-12 142 views
2

我的一位朋友上傳了大約20個左右的大自然照片畫廊,她在過去一年左右的時間裏完成了webshots.com,但是,我剛剛爲她購買了一個付費的Flickr帳戶,一個生日禮物,我想從網頁截圖中下載她的所有照片,並準備好讓她上傳到Flickr,一旦她收到有關她的賬戶升級的電子郵件(她不在國外 - 沒有互聯網接入)。重寫Greasemonkey和FireFox中的URL部分

我無法訪問她的網頁截圖帳戶,因此我使用Greasemonkey和DownThemAll開始將她的圖像保存到桌面上的文件夾中。

我對JavaScript有點新,並且所有可用於Greasemonkey的「用戶腳本」都不完全符合我的需要。

當一個畫廊頁面加載:

(http://[category].webshots.com/album/[album-id]), 

我需要的Greasemonkey腳本來查找所有圖片鏈接:

(http://[category].webshots.com/photo/[photo-page-id]) 

並重新編寫,以反映此計劃:

(http://community.webshots.com/photo/fullsize/[photo-page-id]) 

這很容易嗎?看起來好像是這樣,但我似乎無法做到。

這裏是我當前的Greasemonkey腳本,不工作:

// ==UserScript== 
// @name   Webshot Gallery Fixer 
// @namespace  WGF 
// @description Fixes webshot galleries 
// @include  http://*.webshots.com/* 
// ==/UserScript== 

var links = document.getElementsByTagName("a"); //array 
var regex = /^(http:\/\/)([^\.]+)(\.webshots\.com\/photo\/)(.+)$/i; 
for (var i=0,imax=links.length; i<imax; i++) { 
    links[i].href = liks[i].href.replace(regex,"$1community$3fullsize/$4"); 
} 
+0

我不知道你要在這裏完成的任務,但似乎做手工實際上可能比快編寫代碼爲你做。 – 2010-07-12 23:18:49

+3

當您從其中一個答案複製代碼並將其編輯到您的問題中時,您應該記錄下來。否則會令人困惑。在這種情況下,您在複製答案時複製了錯字。正如@Brock Adams指出的那樣,你可以修正錯字,它應該適合你。 – Robusto 2010-07-13 01:08:09

回答

6
var links = document.getElementsByTagName("a"); //array 
var regex = /^(http:\/\/)([^\.]+)(\.webshots\.com\/photo\/)(.+)$/i; 
for (var i=0,imax=links.length; i<imax; i++) { 
    links[i].href = links[i].href.replace(regex,"$1community$3fullsize/$4"); 
} 

應該做的伎倆

+0

@Brock Adams可能是因爲OP從答案中解除了代碼。檢查問題的編輯。 – 2010-07-13 00:33:18

+0

@George Marian:是的,它在查看編輯歷史時看起來如此。對不起,Robusto,仍然有這個錯字。 ;-) – 2010-07-13 00:44:11

+0

@George Marian:固定錯字。感謝您指出了這一點。 :) – Robusto 2010-07-13 00:57:38

2

你的代碼是好的,但對於一個錯字:

links[i].href =liks [i].href.replace(regex,"$1community$3fullsize/$4");

更換鏈接纔可鏈接和它的作品。

打開Firebug控制檯,打開大部分警告,然後重新加載頁面。您可以查看您的腳本可能導致的錯誤(加上網站本身的錯誤數量)。

+0

+1發現錯字,但你自己錯了。這是喜歡。 ;) – 2010-07-14 06:20:49

+0

@George Marian:D'Oh!這正是我嘗試從我的固定副本中手工重新創建錯誤所得到的結果。固定。謝謝。 – 2010-07-14 07:13:31

1

相當晚的答案,但我會發帖無論如何,以防它會做一些好事。

我對這個東西自己是一種新鮮感,但我不認爲這將有助於爲鏈接[i] .href分配一個值,因爲它只是一個變量。這樣做不會改變頁面上的任何內容。我想你應該更換此:

links[i].href = links[i].href.replace(regex,"$1community$3fullsize/$4"); 

與此:

document.getElementsByTagName("a")[i].href = links[i].href.replace(regex,"$1community$3fullsize/$4");