Firefox без политики одинакового происхождения

Firefox без политики одинакового происхождения

У меня возникла все более раздражающая проблема с реализацией политики одного и того же источника в Firefox.

Я разрабатываю интегрированную систему с поддержкой сенсорного экрана, и у нас есть возможность для пользователя загружать веб-страницы в iframes в нескольких местах на экране. Веб-страницы могут бытьлюбойвеб-страницы любого типа из любого домена и местоположения (Google, Yahoo, страницы интранета и т. д.), и в этом заключается моя проблема.

Мне нужно иметь возможность добавить событие onclick в iframe, которое возвращает мне идентификатор iframe (или какой-либо другой уникальный идентификатор) в качестве ответа. Это говорит мне, что в iframe происходит активность (просмотр веб-страниц) и что iframe не следует перезагружать (страницы настроены на фиксированный интервал автоматического обновления, который должен прерываться при активности).

Я прочитал почти все, что мне выдает Google (но мне бы хотелось получить опровержение по этому вопросу), и обнаружил, что это лучшее (среди многих других) решение:

<iframe src='http://google.com' id='iframe1' onload='netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite"); this.contentWindow.document.addEventListener("click", function(event) {alert(this.id);}, false)'></iframe>

Это просто дает мне обычноеразрешение отклонено дляhttp://localhostчтобы получить свойство Window.document изhttp://google.com

Я знаюпочемуЯ получаю это сообщение об ошибке, и мой вопрос прост. Как мне его удалить?

Это интегрированная система, я могу скомпилировать Firefox из исходного кода, могу редактировать исходный код, если нужно, могу изменить prefs.js и т. д., но мне нужно использовать Firefox (я знаю, что во всех других разумных веб-браузерах есть удобный переключатель командной строки, чтобы отключить его...), но у нас (довольно) тесная интеграция с платформой Firefox, которую было бы трудно удалить.

В настоящее время мы используем Firefox v.3.5.16 (я знаю, что он EOL, мы собираемся обновить его в другой раз) на платформе Debian Squeeze. Если нужно, я могу обновиться до более новой версии Firefox, но из того, что я обнаружил, похоже, что в этом отношении он справляется еще хуже.

TL;DR Помогите мне закрыть политику того же происхождения, влюбым возможным способомв Firefox 3.5.16 для интегрированной платформы, которой необходимо изменять код через кроссдоменные фреймы.

решение1

Я чувствую себя довольно глупо.

Это работает, когда вы используетеUniversalXPConnectвместо UniversalBrowserWrite.

Например: netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

Также, вы можетенетиспользуйте this.id или this.parentNode.id, что все равно дает (другую) ошибку доступа. Чтобы обойти эту проблему, просто сначала сохраните ее во временной переменной:

onload='var tempstuff = this.id; this.contentWindow.document.addEventListener("click", function(event) {alert(tempstuff);}, false)'

Связанный контент