我的一位朋友在过去一年左右上传了大约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");
}
答案 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");