0

我在用着:

  • 火狐 46
  • 蝰蛇 3.13

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

但是 Vimperator:js命令和当前的 html 页面有不同的范围,我不知道如何引用当前页面window对象,从:js.

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

window.myvar = 10

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

:js alert(window.myvar)

,然后显示undefined

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

4

1 回答 1

1

使用content.

使用content. 例如。当前选项卡中呈现的文档是content.document.

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

警告:

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

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

深入了解后,您可以使用自动完成功能,但不能使用content.

如果您需要探索窗口对象,则必须在另一个工具中进行 - Firebug、开发人员工具等。浏览器控制台 (CSJ) 是一个不错的选择,因为它与您在 Vimperator 中看到的内容非常匹配。

解决方法

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

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

然后,如果您使用 打开命令行:,键入myVar并按C-w,它会将命令行更改为echo content.myVar并将光标放在末尾。
(如果您愿意,可以替换echojs- 我觉得echo更方便。)

于 2016-08-13T06:15:00.457 回答