【问题标题】:Rewrite parts of links using Greasemonkey and FireFox使用 Greasemonkey 和 FireFox 重写部分链接
【发布时间】:2010-07-12 23:12:29
【问题描述】:

我的一个朋友在 webshots.com 上上传了她在过去一年左右拍摄的大约 20 个自然照片画廊,但是,我刚刚为她购买了一个付费的 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");
}

【问题讨论】:

  • 我不确定您要在这里完成什么,但似乎手工完成实际上可能比为您编写代码更快。
  • 当您从其中一个答案复制代码并将其编辑到您的问题中时,您应该做一个注释。否则它会变得混乱。在这种情况下,您在复制我的答案时复制了一个错字。正如@Brock Adams 指出的那样,您只需修复错字,它应该对您有用。

标签: javascript greasemonkey


【解决方案1】:
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");
}

应该做的伎俩

【讨论】:

  • @Brock Adams 可能是因为 OP 从答案中提取了该代码。检查问题的编辑。
  • @George Marian:是的,在检查编辑历史时看起来就是这样。很抱歉,Robusto,不过还是有那个错字。 ;-)
  • @Robusto 我没有做这样的事情,@Brock Adams 指出错字值得称赞。 :)
  • @Brock Adams:很抱歉混淆了。
【解决方案2】:

您的代码很好,但有一个错字:

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

links 替换 liks 即可。

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

【讨论】:

  • +1 用于发现拼写错误,尽管您自己拼写错误。是喜欢。 ;)
  • @George Marian:噢!这就是我试图从我的固定代码副本中手动重新创建错误的结果。固定的。谢谢。
【解决方案3】:

很晚的答案,但无论如何我都会发帖以防万一。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-13
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    相关资源
    最近更新 更多