我正在尝试使用 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
最佳答案
当您开始时,您处于浏览器窗口本身的上下文中,而不是任何特定的文档。您可以访问镶边元素(菜单、工具栏、选项卡等)。 document
对象当前指的是浏览器窗口。
要将上下文切换到事件选项卡中的文档,请使用:
repl.enter(content)
现在 document
对象是在事件选项卡中加载的文档,因此您可以访问它的 DOM 树并且可以操作它。
关于javascript - 使用 mozrepl 时 document.getElementById() 返回 null (但在 firebug 中则不然),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485866/