javascript - 如何为 Imagus 悬停缩放扩展开发自定义过滤器?

标签 javascript regex browser-extension

在我读到 Hover Zoom being evil 之后(哎呀!),有两篇文章让我立即切换到另一篇文章,名为 Imagus:

Imagus 似乎通过做 Hover Zoom 也能做的几乎所有事情来满足要求,但除此之外,它似乎还支持自定义过滤器(以支持更多站点),此外还有它已经包含的大量内容。

在 Chrome 的选项页面中,过滤器部分看起来非常容易破解:

screenshot

然而,与此同时,它似乎是用我称之为 Perl Javascript 的方式编写的.

Perl Coding Best Practices

我认为自己精通 Javascript、DOM 和 Regex,但很难猜测它们在做什么,所以我查找了文档。好像有一个 MyOpera blog ,现在是 website of the project目前,托管在 Google 文档上。

该页面没有提及任何关于如何开发“过滤器”(或“筛子”,如该页面所写?)

那么,我如何开发自定义过滤器?我不知道所有的可能性(它似乎非常灵活),但即使是像修改 URL 这样的简单示例也不错. (将 /thumb/123.jpg 变成 /large/123.jpg 或其他东西)。

或者甚至只是对字段的解释。他们似乎是:

  • 链接
  • url
  • 资源
  • img
  • note <- 可能评论

最佳答案

字段可以包含 JavaScript 函数或正则表达式。

  • link 接收您将鼠标悬停在其上的任何链接的地址。
  • url 使用链接字段中捕获的括号值来制作 url。
  • res 以文本形式接收 url 或链接指向的任何页面。

如果其中一个为空,则跳过该步骤,例如没有 url 和 res 只是从链接的输出加载。
一个简单的例子是 xkcd 过滤器:
链接:

^(xkcd\.(?:org|com)/\d{1,5})/?$

查找指向 xkcd 漫画的链接。如果您不熟悉正则表达式,括号之间的任何内容都会被保存,并且可以在 Imagus 中用作“$n”来指代第 n 次捕获。请注意,如果在第一个括号后有一个“?:”,它就不会被捕获。

网址:

$1/info.0.json

这只是将“/info.0.json”附加到链接地址。

资源:

:
if ($._[0] != '{') $ = null;
else $ = JSON.parse($._), $ = [$.img, [$.year, ('0'+$.month).slice(-2),
('0'+$.day).slice(-2)].join('-') + ' | ' + $.safe_title + ' - ' + $.alt + ' ' +
$.link];
return $;

此 javascript 函数解析 JSON 文件并返回一个数组,其中第一个元素是链接,第二个元素是显示在 hoverzoomed 图像下的标题文本。 如果您只返回一个链接,那么标题将是链接的替代文本。

  • img 用作链接,但用于图像源
  • to 用作 res 或 url 是

一个简单的用例是当您想要从缩略图重定向到雇员时。 就像 wikimapia.org 的过滤器。
img:

^(photos\.wikimapia\.org/p/[^_]+_(?!big))[^.]+

这会找到名称中没有 big 的任何 wikimapia 图像。
到:

$1big

在 url 中添加 big。

  • note 仅用于笔记。

某些过滤器在此处具有指向 API 文档的链接。

现在,还没有关于此功能的文档,所以我可能错过了很多,但希望这就足够了。

干杯。

关于javascript - 如何为 Imagus 悬停缩放扩展开发自定义过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24045756/

相关文章:

java - 在 Java 中用多个连续逗号拆分字符串

php - 从数组中删除与特定单词匹配的所有字符串(php)

r - 如何仅在第一个数字上分割字符串

javascript - 无法使用 jQuery 获取 anchor 标记的 href 值

google-chrome - chrome 的 --load-extension 参数不起作用

javascript - 当包含 JQuery 时,Python 抛出 KeyError

javascript - 排序元素折叠和内容重新加载

javascript - 如何检测 Google Instant 页面是否已完全加载?

javascript - 当鼠标光标放置在 href 标签中时,隐藏或操作浏览器左下侧的 URL

Java Applet 文件权限错误