如何从Vimperator获取页面的窗口对象?

时间:2016-05-23 18:37:51

标签: javascript firefox vimperator

我正在使用:

  • Firefox 46
  • Vimperator 3.13

我想使用Vimperator在网页中注入javascript,有点像Grease Monkey会做的,但是使用Vimperator及其:js命令。

但Vimperator :js命令和当前的html页面具有不同的范围,我无法从window找到如何引用当前页面:js对象。< / p>

例如,如果我打开Firefox Web控制台,我运行:

window.myvar = 10

然后,如果我在Vimperator工具栏中运行以下命令:

:js alert(window.myvar)

,然后显示undefined

那么,如何从Vimperator获取当前页面window对象?

1 个答案:

答案 0 :(得分:1)

使用content

使用content。例如。当前标签中呈现的文档为content.document

顺便说一句,使用window获得的顶级对象代表Firefox GUI。

警告:

如果您尝试在content对象上使用Vimperator的命令行自动完成,Vimperator和Pentadactyl中都会出现一个古老的错误,它会导致Firefox崩溃。由于它会自动触发(除非您禁用它),这意味着您甚至无法在命令行中键入content. - 它将触发自动完成并立即使浏览器崩溃。

您需要做的是粘贴命令,或者输入say t.myVar,然后跳回来填写conten。 (不要将光标直接移回. - 使用 Home 或其他东西。)这对屁股来说确实很痛苦,但确实如此。

您可以在深入时使用自动完成功能,而不是使用content

如果你需要探索窗口对象,你必须在另一个工具中使用它 - Firebug,开发人员工具等...浏览器控制台(CSJ)是一个很好的选择,因为它与你在Vimperator中看到的非常匹配。 / p>

解决方法

您可以使用这样的键绑定:

:cmap <C-w> <Home>echo content.<End>

然后,如果使用打开命令行,键入myVar并按 Cw ,它会将命令行更改为{{1}并将光标放在末尾 (如果您愿意,可以将echo content.myVar替换为echo - 我发现js更方便。)