2010-07-12 92 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");