草庐IT

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

coder 2024-05-11 原文

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

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

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

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

我认为自己精通 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/

有关javascript - 如何为 Imagus 悬停缩放扩展开发自定义过滤器?的更多相关文章

  1. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  2. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  3. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  4. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  5. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  6. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  7. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  8. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

  9. ruby - 定义方法参数的条件 - 2

    我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano

  10. ruby - 如何在 Grape 中定义哈希数组? - 2

    我使用Ember作为我的前端和GrapeAPI来为我的API提供服务。前端发送类似:{"service"=>{"name"=>"Name","duration"=>"30","user"=>nil,"organization"=>"org","category"=>nil,"description"=>"description","disabled"=>true,"color"=>nil,"availabilities"=>[{"day"=>"Saturday","enabled"=>false,"timeSlots"=>[{"startAt"=>"09:00AM","endAt"=>

随机推荐