document.getElementById()在使用mozrepl时返回null(但不在firebug中)

时间:2010-03-21 03:57:33

标签: javascript firefox-addon firefox3.6

我正在尝试使用mozrepl Firefox扩展程序从emacs中为我提供Javascript REPL。

我想我已经正确设置了它。我可以从emacs与REPL进行交互,并且可以像教程页面中所描述的那样探索文档。问题来自于我尝试做一些非常简单的事情,比如获取canvas元素的上下文:

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,Firefox 3.6

1 个答案:

答案 0 :(得分:3)

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

要在活动标签中将上下文切换到文档,请使用:

repl.enter(content)

现在document对象是活动标签中加载的文档,因此您可以访问其DOM树,并且可以操作它。