2009-10-22 1 views
1

Я разрабатываю расширение firefox, На клиентской стороне веб-страницы я добавляю ссылку и при нажатии ссылки я намереваюсь открыть окно, где это позволит пользователь вводит текст. когда я нажимаю ссылку, он открывает окно, но он не позволит мне писать на него.открыть окно с существующей страницы в firefox дает мне ошибку безопасности

например. ww.document.write('<div id = "textDiv">') ; здесь он дает мне ошибку:

Error: uncaught exception: [Exception... "Security error" code: "1000" nsresult: "0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)" location: "chrome://googbar/content/googbar.js Line: 272"]

и я открыть окно, используя следующее:

var ww = Components.classes[ 
    "@mozilla.org/embedcomp/window-watcher;1"].getService(Components.interfaces.nsIWindowWatcher); 
var wm =Components.classes["@mozilla.org/appshell/window-mediator;1"] 

calWindow = ww.openWindow(null,'calendarWindow',null, 'left =500, top = 190, width = 230, height = 220,titlebar = no', null); 

Окно, которое открывается не пустое окно, оно содержит содержимое родительское окно. например, я открываю это окно из википедии, открытое новое окно содержит на ней страницу вики. Может ли кто-нибудь мне помочь?

ответ

0

Я не совсем понимаю, что вызывает это, но эти twopages на MDC предполагают, что на изменения в Firefox 3.0 могут повлиять некоторые проблемы безопасности.

Хотя это не полный ответ, это может поставить вас на правильный путь для решения вашей проблемы. Если нет, сообщите нам более подробную информацию о том, что вы пытаетесь сделать.

+0

с моим расширением Я пытаюсь добавить ссылку, которая при нажатии открывается окно, и в этом окне пользователь может ввести текст, который будет сохранен в SQLite. Таким образом, это позволяет пользователю комментировать на веб-странице. – fftoolbar

+0

Я даже попробовал window.open, который, я полагаю, делает то же самое, но он дает мне ту же ошибку. Эта ссылка, о которой я говорю, добавляется на веб-странице (не как панель инструментов) на стороне клиента. – fftoolbar

0

1) nsIWindowWatcher.openWindow Второй аргумент - URL. «calendarWindow» - нет. A google result from mozillazine предполагает, что передача '' магически делает работу document.write, я не проверял.

2) Я бы постарался установить document.body.innerHTML вместо document.write(). Я думаю, что document.write() - это плохой API, который должен существовать только для совместимости.

3) В любом случае, в вашем случае я не понимаю, почему вам нужно открыть все окно браузера, чтобы разместить там простой HTML-код. Создайте диалог XUL, поместите его в расширение и откройте его (используя window.open('chrome://....', '', 'chrome')). Это также намного быстрее открыть.

+0

Спасибо Nick за предложение. Последнее было для меня чудесным. Еще раз спасибо. – fftoolbar