DOM и inframe - 2

12
Segey
На сайте с 23.08.2005
Offline
404
991

Упорно пытался запостить в старую тему /ru/forum/142327

Но выдает ошибку....

Все работало хорошо, пока не появилась необходимость загружать во фрейм url по http, после этого редактирование страницы становится совершенно недоступным...

Например:

<html>
<body>
<script type="text/javascript">
function ff()
{
document.getElementById('mainframe').src = 'http://www.google.ru/';
}


function ff2()
{
x = document.getElementById("mainframe").contentDocument;
x.getElementsByName("q")[0].value = '11111111';
}

</script>
<iframe id="mainframe" src="temp_.html" width="100%" height="680"></iframe>
<input type="button" value="Клик" OnClick="ff();">
<input type="button" value="Клик" OnClick="ff2();">

</body>
</html>

После этого все - ноль эмоций...

ps. Если скопировать текст в файл и с сервера загрузить его - то все работает.

Brexit - уже совсем рядом. (https://about-this-model.blogspot.com/2019/03/brexit.html)
Shtogrin
На сайте с 02.11.2006
Offline
95
#1

Segey, Только для Firefox, в начале функции ff2 вставить

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead UniversalBrowserWrite");

После клика, появится окошко Firefox о требованиях спец. привилегий, ответить "Да".

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
Segey
На сайте с 23.08.2005
Offline
404
#2

Shtogrin,

Не срабатывает:

netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead UniversalBrowserWrite");
alert('aaa');
Shtogrin
На сайте с 02.11.2006
Offline
95
#3

function ff2()
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead UniversalBrowserWrite");
x = document.getElementById("mainframe").contentDocument;
x.getElementsByName("q")[0].value = '11111111';
}

Первая кнопка загружает в фрейм http://www.google.ru/, вторая заполняет поле поиска.

Если не работает, посмотрите Инструменты/Консоль ошибок и напишите что пишет.

Segey
На сайте с 23.08.2005
Offline
404
#4

Shtogrin,

Да, есть ошибка

Ошибка: uncaught exception: A script from "***********" was denied UniversalBrowserRead UniversalBrowserWrite privileges.
Shtogrin
На сайте с 02.11.2006
Offline
95
#5

После клика, появится окошко Firefox о требованиях спец. привилегий, надо ответить "Разрешить". Эта ошибка будет если не разрешить получение привилегий.

Segey
На сайте с 23.08.2005
Offline
404
#6

Shtogrin,

Дело как раз в том, что окошка не появляется, просто ошибка в лог пишется

FF переустановить что ли..

Segey
На сайте с 23.08.2005
Offline
404
#7

переустановил, все то же самое

Shtogrin
На сайте с 02.11.2006
Offline
95
#8
Segey:
переустановил, все то же самое

Настройки то остались.

Ищем prefs.js

c:\Documents and Settings\.....\Application Data\Mozilla\Firefox\Profiles\.....\prefs.js

в файле что-то вроде

user_pref("capability.principal.codebase.p0.denied", "UniversalBrowserWrite UniversalBrowserRead");

user_pref("capability.principal.codebase.p0.id", "file://");

user_pref("capability.principal.codebase.p0.subjectName", "");

и удаляем.

Перед этим закрыть FF, ну и сделать копию prefs.js

Можете еще почитать

http://www.mozilla.org/projects/security/components/jssec.html

Segey
На сайте с 23.08.2005
Offline
404
#9

Shtogrin,

Искал в том файле, ненашел ни ожной подобной строки. Пробовал всю папку перебирать на наличие UniversalBrowserWrite или UniversalBrowserRead, но ничего нет т.е. ни в одном файле не упоминается.

Версия FF 2.0.0.6 :(

Shtogrin
На сайте с 02.11.2006
Offline
95
#10

Segey, Видимо где-то в настройках можно запретить это все глобально.

Проблема в том что вы пытаетесь достучаться через фрейм до документа с другого домена. Это опасно разрешать для всех сайтов/файлов на компьютере. Для того чтобы временно это разрешить, поступим наоборот - добавьте в конец файла prefs.js

user_pref("capability.principal.codebase.p0.granted", "UniversalBrowserWrite UniversalBrowserRead");

user_pref("capability.principal.codebase.p0.id", "file://");

user_pref("capability.principal.codebase.p0.subjectName", "");

Это разрешит UniversalBrowserWrite UniversalBrowserRead для всех file://.

После экспериментов не забудьте удалить. Сейчас файл с фреймом на локальном компьютере?

Обязательно надо закрыть FF.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий