Javascript-форум (https://javascript.ru/forum/)
-   Firefox/Mozilla (https://javascript.ru/forum/css-html-firefox-mizilla/)
-   -   Нет прав на фрейм (https://javascript.ru/forum/css-html-firefox-mizilla/42972-net-prav-na-frejjm.html)

skruks 16.11.2013 19:31

Нет прав на фрейм
 
Набираю в консоли Firebug (или другой):
//Нахожу некий фрейм в окне:
document.querySelectorAll("div#comments-test-iframe iframe");
Пытаюсь с этим фреймом что-либо делать. Мне говорят, что я не имею прав на это.
Как запустить команду в консоли (а потом и в расширении) так, чтобы я имел все права на нужный фрейм?

Deff 17.11.2013 05:45

Цитата:

Сообщение от skruks
skruks

Если фрейм не на том же домене, что и главное окно - доступа из ява скрипт - нет
Если на том же, то типичная ошибка: не дожидаются события загрузки фрейма

Второе, доступ к контент осуществляется ... Пример:

Frame = document.querySelectorAll("div#comments-test-iframe iframe");
Frame.onload = function() {
 docFrame=Frame.contentWindow.document;
 alert(docFrame.body.innerHTML)
}

skruks 17.11.2013 08:51

Фрейм у меня уже подгружен
Пишу так:
var Frame = document.querySelectorAll("div#comments-test-iframe iframe");
docFrame=Frame[0].contentWindow.document;
alert(docFrame.body.innerHTML)

А мне в ответ всё то же:
Error: Permission denied to access property 'document'

Наверное, фрейм в другом домене. И как теперь с ним работать?

Deff 17.11.2013 14:17

Цитата:

Сообщение от skruks
Наверное, фрейм в другом домене. И как теперь с ним работать?

Если есть возможность установки своих скриптов во фрейм - пробуйте через postMessage http://javascript.ru/ajax/cross-origin-2
или смотреть иной вариант кросс обмена

skruks 17.11.2013 16:29

Цитата:

Сообщение от Deff (Сообщение 281524)
Если есть возможность установки своих скриптов во фрейм - пробуйте через postMessage http://javascript.ru/ajax/cross-origin-2
или смотреть иной вариант кросс обмена

О май гадбл!) Читал я про postMessage - проще повеситься.
Но ведь проблема то банальная. Неужели нет способа попроще?!

skruks 25.01.2014 11:53

Выяснил, что в расширении права на фрейм можно получить, даже если он из другого домена. Для этого работать с фреймом нужно, получив его в контексте например всплывающего меню, вызванного щелчком мышки по области фрейма:
docframe = document.popupNode.ownerDocument;
А Firebug так не умеет.


Часовой пояс GMT +3, время: 21:31.