2010-03-21 109 views
2

我正尝试使用mozrepl Firefox扩展来为我提供emacs中的Javascript REPL。document.getElementById()在使用mozrepl(但不在萤火虫中)时返回null

我想我已经设置正确。我可以通过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的

回答

3

当你开始,你在浏览器窗口本身,而不是任何特定文件的情况下。您可以访问chrome元素(菜单,工具栏,选项卡等)。 document对象当前指的是浏览器窗口。

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

repl.enter(content) 

现在document对象在活动选项卡中加载的文件,所以你可以访问它的DOM树NAD可以操纵它。

+0

啊完美,谢谢!我知道这会很简单。 – teamonkey 2010-03-23 16:58:24