使用Greasemonkey和FireFox重写部分链接

时间:2010-07-12 23:12:30

标签: javascript greasemonkey

我的一位朋友在过去一年左右上传了大约20个左右的大自然画廊到webshots.com,然而,我刚刚为她购买了付费的Flickr帐户作为生日礼物,我想下载她的所有照片都来自网络摄影,并让她准备好上传到Flickr,一旦她收到有关她的帐户升级的电子邮件(她不在国内 - 没有互联网访问。)

我无法访问她的webshots帐户,因此我使用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");
}

3 个答案:

答案 0 :(得分: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");
}

应该做的伎俩

答案 1 :(得分:2)

您的代码很好,但输错了:

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

liks 替换为 链接 ,然后就可以了。

打开Firebug控制台,打开大部分警告,然后重新加载页面。您可以看到脚本可能导致的错误(加上网站本身的一公吨错误)。

答案 2 :(得分: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");