2010-03-21 1 views
2

Я пытаюсь использовать расширение Firefox mozrepl, чтобы дать мне Javascript REPL из emacs.document.getElementById() возвращает null при использовании mozrepl (но не в firebug)

Я думаю, что я правильно настроил его. Я могу взаимодействовать с REPL из emacs и может изучить документ в значительной степени, как описано на страницах учебника. Проблема возникает, когда я пытаюсь сделать что-то действительно просто, как получить контекст брезентового элемента:

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 будет просто возвращать нуль.

Если я запускаю firebug, я могу ввести одно и то же, и он вернет действительный контекст, но мне бы очень хотелось, чтобы REPL работал в emacs. Я не думаю, что это ошибка, но я, вероятно, не настроил mozrepl правильно. Может ли кто-нибудь помочь?

Mozrepl 1,0, Firefox 3,6

ответ

3

При запуске, вы находитесь в контексте окна браузера себе, а не какой-либо конкретный документ. У вас есть доступ к элементам хрома (меню, панели инструментов, вкладки и т. Д.). Объект document в настоящее время относится к окну браузера.

Для переключения контекста документа в активном использовании вкладки:

repl.enter(content) 

Теперь document объект загружен документ в активной вкладке, поэтому у вас есть доступ к его DOM дерево-над может манипулировать.

+0

Ах, отлично, спасибо! Я знал, что это будет что-то простое. – teamonkey

Смежные вопросы