2

我正在尝试使用mozrepl Firefox 扩展从 emacs 中给我一个 Javascript REPL。

我想我已经正确设置了它。我可以与 emacs 中的 REPL 进行交互,并且可以按照教程页面中的描述来探索文档。当我尝试做一些非常简单的事情时,问题就来了,比如获取画布元素的上下文:

repl> document.getElementById("mycanvas").getContext("2d")
!!! TypeError: document.getElementById("mycanvas") is null

Details:

  message: document.getElementById("mycanvas") is null
  fileName: chrome://mozrepl/content/repl.js -> file:///C:/Users/teamonkey/AppData/Roaming/Mozilla/Firefox/Profiles/chfdenuz.default/mozrepl.tmp.js
  lineNumber: 1
  stack:
    @chrome://mozrepl/content/repl.js -> file:///C:/Users/teamonkey/AppData/Roaming/Mozilla/Firefox/Profiles/chfdenuz.default/mozrepl.tmp.js:1
  name: TypeError

不仅仅是那个特定的实例:任何对 getElementById 的调用都只会返回 null。

如果我启动 firebug,我可以输入相同的内容,它会返回一个有效的上下文,但我真的很想让 REPL 在 emacs 中工作。我不认为这是一个错误,但我可能没有正确配置 mozrepl。任何人都可以帮忙吗?

Mozrepl 1.0,火狐 3.6

4

1 回答 1

3

当您开始时,您处于浏览器窗口本身的上下文中,而不是任何特定的文档。您可以访问 chrome 元素(菜单、工具栏、选项卡等)。该document对象当前指的是浏览器窗口。

要将上下文切换到活动选项卡中的文档,请使用:

repl.enter(content)

现在document对象是加载在活动选项卡中的文档,因此您可以访问其 DOM 树并可以对其进行操作。

于 2010-03-22T11:09:42.993 回答