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

标签 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

最佳答案

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

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

repl.enter(content)

现在 document 对象是在事件选项卡中加载的文档,因此您可以访问它的 DOM 树并且可以操作它。

关于javascript - 使用 mozrepl 时 document.getElementById() 返回 null (但在 firebug 中则不然),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485866/

相关文章:

javascript - 使用 javascript 控制 HTTP 基本身份验证

javascript - 我想用 javascript 进行高级搜索。如何?

javascript - Ember Handlebars 生成表

javascript - 火狐扩展 : Inject javascript into page before standard page javascript is loaded

firefox - 无法更改 FireFox 中 HTML5 音频标签的音量

javascript - Greasemonkey 如何与 NoScript 等 javascript 拦截器交互?

javascript - 如何通过代码切换 Firefox 响应式设计 View 分辨率

javascript - 在运行之前拦截 Javascript

css - 仅在 Windows 上的 Firefox 3.6 中,从 Google Font API 加载的 WebFont 看起来很糟糕

debugging - 为什么 console.log 语句不再出现在我的 FireBug 控制台中?