Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Greasemonkey和FireFox重写部分链接_Javascript_Greasemonkey - Fatal编程技术网

Javascript 使用Greasemonkey和FireFox重写部分链接

Javascript 使用Greasemonkey和FireFox重写部分链接,javascript,greasemonkey,Javascript,Greasemonkey,我的一个朋友在webshots.com上上传了她在过去一年左右拍摄的大约20张自然照片,然而,我刚刚为她购买了一个付费Flickr账户作为生日礼物,我想从网上下载她的所有照片,一旦她收到关于她的帐户升级的电子邮件(她不在国外,不能上网),就可以将照片上传到Flickr上 我无法访问她的Webshot帐户,所以我求助于Greasemonkey和DownThemAll,开始将她的图片保存到我桌面上的文件夹中 我对javascript有点陌生,所有可用于Greasemonkey的“用户脚本”都不能完全

我的一个朋友在webshots.com上上传了她在过去一年左右拍摄的大约20张自然照片,然而,我刚刚为她购买了一个付费Flickr账户作为生日礼物,我想从网上下载她的所有照片,一旦她收到关于她的帐户升级的电子邮件(她不在国外,不能上网),就可以将照片上传到Flickr上

我无法访问她的Webshot帐户,所以我求助于Greasemonkey和DownThemAll,开始将她的图片保存到我桌面上的文件夹中

我对javascript有点陌生,所有可用于Greasemonkey的“用户脚本”都不能完全满足我的需要

加载库页面时:

我需要Greasemonkey脚本来查找指向图像的所有链接:

并重新编写以反映此方案:

这容易吗?看起来是这样的,但我似乎无法正确理解

这是我当前无法使用的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");
}
/==UserScript==
//@name Webshot画廊修复程序
//@WGF
//@description修复webshot库
//@include http://*.webshots.com/*
//==/UserScript==
var links=document.getElementsByTagName(“a”)//排列
var regex=/^(http:\/\/)([^\.]+)(\.webshots\.com\/photo\/)(.+)$/i;
对于(var i=0,imax=links.length;i
var links=document.getElementsByTagName(“a”);//数组
var regex=/^(http:\/\/)([^\.]+)(\.webshots\.com\/photo\/)(.+)$/i;

对于(var i=0,imax=links.length;i您的代码很好,但对于输入错误:

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

liks替换为链接,它就会起作用


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

回答得很晚,但我还是会发布,以防有什么好处

我自己对这些东西有点生疏,但我认为为链接[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");

我不确定你想在这里完成什么,但似乎手工操作实际上比编写代码快得多。当你从一个答案中复制代码并将其编辑到你的问题中时,你应该做一个笔记。否则会让人困惑。在这种情况下,你在复制我的答案时复制了一个打字错误。正如@Brock Adams所指出的当然,你可以只修改拼写错误,它应该对你有用。@Brock Adams可能是因为OP从答案中删除了该代码。检查对该问题的编辑。@George Marian:是的,在检查编辑历史记录时看起来是这样的。很抱歉,Robusto,仍然有那个拼写错误。.-)@罗布斯托:我没有做过这样的事,@Brock Adams指出打字错误值得表扬。@Brock Adams:很抱歉弄错了。+1因为发现了打字错误,尽管你自己也错了。这就像是@乔治·玛丽安:噢!这就是我从固定的代码副本中手动重新创建错误所得到的结果。固定的。谢谢
// ==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");
}
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");
}
links[i].href = links[i].href.replace(regex,"$1community$3fullsize/$4");
document.getElementsByTagName("a")[i].href = links[i].href.replace(regex,"$1community$3fullsize/$4");