Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как получить доступ к iframe? (https://javascript.ru/forum/misc/18106-kak-poluchit-dostup-k-iframe.html)

vladbir 17.06.2011 13:10

Как получить доступ к iframe?
 
Как вызывать функции из фрэйма и получить доступ к dom?
<html>
<head>
<script type="text/javascript">
function needed(){
// выполняемые действия
document.write(window.frames["fr"].contentWindow.document.childNodes.length); // доступ по индексу тоже не работает
}
</script>
</head>

<body onclick="needed()">
<iframe src="frame.html" id="fr"/>
</body>
</html>


Пробовал:
window.frames["fr"].contentWindow.document
window.frames["fr"].contentDocument
window.frames["fr"].document
window.frames["fr"]
document.getElementById("fr").contentDocument 
document.getElementById("fr").contentWindow.document
document.getElementById("fr").document
document.getElementById("fr")

Nekromancer 17.06.2011 13:14

У документа нету детей, есть только у корневого элемента. Корневой элемент можно найти по ссылке
document.documentElement
.
Для iframe это будет:
frameElement.contentWindow.document.documentElement

vladbir 17.06.2011 13:18

у документа есть ребенок - <html>

Nekromancer 17.06.2011 13:23

Был не прав :)
<html>
<head>
<script type="text/javascript">
window.onload = function(){
// выполняемые действия
alert(document.getElementById('fr').contentWindow.document.childNodes.length); // доступ по индексу тоже не работает
}
</script>
</head>

<body>
<iframe src="javascript:true;" id="fr"/>
</body>
</html>

vladbir 17.06.2011 13:24

Некромант - твой код не работает.
У кого какие еще варианты?

Nekromancer 17.06.2011 13:27

Не знаю, где у тебя не работает, у меня даже IE 5 сработал правильно.

vladbir 17.06.2011 13:35

а что делать со строчкой <iframe src="javascript:true;" id="fr"/> ? Мне нужна строка <iframe src="frame.html" id="fr"/>

Nekromancer 17.06.2011 13:41

Так подставь туда свою ссылку, я не знаю твоего сайта, что бы загрузить твой файл и сымитировал просто html документ. Разницы нету. Разве что неправильно сработает событие onload.
<html>
<head>
<script type="text/javascript">
var testIframe = function(iframe){
// выполняемые действия
alert(iframe.contentWindow.document.childNodes.length); // доступ по индексу тоже не работает
}
</script>
</head>

<body>
<iframe src="javascript:true;" onload="testIframe(this)" id="fr"/>
</body>
</html>

Лучше так.

vladbir 17.06.2011 17:39

Проблема решена. Код у меня был написан правильно. И проблема совсем в другом заключалась.

Надо было эту всю шнягу через сервер запускать! А я создал два файлика .html на диске D:\, открыл ПКМ и давай их юзать.
В принципе все должно работать!? Ведь js браузер обрабатывает?! Ну и ладно.

Некроманту спасибо за проявленный интерес!

Forzi 21.11.2012 20:05

Цитата:

Сообщение от vladbir (Сообщение 109224)
Проблема решена. Код у меня был написан правильно. И проблема совсем в другом заключалась.

Надо было эту всю шнягу через сервер запускать! А я создал два файлика .html на диске D:\, открыл ПКМ и давай их юзать.
В принципе все должно работать!? Ведь js браузер обрабатывает?! Ну и ладно.

Некроманту спасибо за проявленный интерес!

Политика безопасности браузера не позволяет получать доступ к dom или js для разных доменов.
Для одного - пожалуйста.
.html на диске D:\ и страница с сервера имеют разные домены.
Потому не работало.


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