gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:53:27 24 4
gpt4 key购买 nike

我正在使用:

  • 火狐46
  • 毒蛇3.13

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

但是Vimperator :js命令和当前html页面有不同的作用域,我无法找到如何引用当前页面window对象,从:js

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

window.myvar = 10

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

:js alert(window.myvar)

,然后显示未定义

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

最佳答案

使用内容

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

顺便说一下,通过 window 获得的顶级对象代表 Firefox GUI。

警告:

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

您需要做的就是粘贴命令,或者输入 t.myVar,然后跳回填写内容。 (不要将光标直接移回 - 使用Home或其他东西。)这确实是一个痛苦的事情,但事实就是如此。

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

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

解决方法

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

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

然后,如果您使用 : 打开命令行,输入 myVar 并按 C-w,它将把命令行更改为 echo content.myVar 并将光标置于末尾。
(如果您愿意,可以将 echo 替换为 js - 我发现 echo 更方便。)

关于javascript - 如何从 Vimperator 获取页面的窗口对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37398192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com