我正在尝试使用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
答案 0 :(得分:3)
当您开始时,您处于浏览器窗口本身的环境中,而不是任何特定文档。您可以访问chrome元素(菜单,工具栏,选项卡等)。 document
对象当前是指浏览器窗口。
要在活动标签中将上下文切换到文档,请使用:
repl.enter(content)
现在document
对象是活动标签中加载的文档,因此您可以访问其DOM树,并且可以操作它。