Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.06.2011, 13:10
Новичок на форуме
Отправить личное сообщение для vladbir Посмотреть профиль Найти все сообщения от vladbir
 
Регистрация: 17.06.2011
Сообщений: 5

Как получить доступ к 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")
Ответить с цитированием
  #2 (permalink)  
Старый 17.06.2011, 13:14
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

У документа нету детей, есть только у корневого элемента. Корневой элемент можно найти по ссылке
document.documentElement
.
Для iframe это будет:
frameElement.contentWindow.document.documentElement
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 17.06.2011, 13:18
Новичок на форуме
Отправить личное сообщение для vladbir Посмотреть профиль Найти все сообщения от vladbir
 
Регистрация: 17.06.2011
Сообщений: 5

у документа есть ребенок - <html>
Ответить с цитированием
  #4 (permalink)  
Старый 17.06.2011, 13:23
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Был не прав
<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>
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #5 (permalink)  
Старый 17.06.2011, 13:24
Новичок на форуме
Отправить личное сообщение для vladbir Посмотреть профиль Найти все сообщения от vladbir
 
Регистрация: 17.06.2011
Сообщений: 5

Некромант - твой код не работает.
У кого какие еще варианты?
Ответить с цитированием
  #6 (permalink)  
Старый 17.06.2011, 13:27
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Не знаю, где у тебя не работает, у меня даже IE 5 сработал правильно.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #7 (permalink)  
Старый 17.06.2011, 13:35
Новичок на форуме
Отправить личное сообщение для vladbir Посмотреть профиль Найти все сообщения от vladbir
 
Регистрация: 17.06.2011
Сообщений: 5

а что делать со строчкой <iframe src="javascript:true;" id="fr"/> ? Мне нужна строка <iframe src="frame.html" id="fr"/>
Ответить с цитированием
  #8 (permalink)  
Старый 17.06.2011, 13:41
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Так подставь туда свою ссылку, я не знаю твоего сайта, что бы загрузить твой файл и сымитировал просто 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>

Лучше так.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #9 (permalink)  
Старый 17.06.2011, 17:39
Новичок на форуме
Отправить личное сообщение для vladbir Посмотреть профиль Найти все сообщения от vladbir
 
Регистрация: 17.06.2011
Сообщений: 5

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

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

Некроманту спасибо за проявленный интерес!
Ответить с цитированием
  #10 (permalink)  
Старый 21.11.2012, 20:05
Новичок на форуме
Отправить личное сообщение для Forzi Посмотреть профиль Найти все сообщения от Forzi
 
Регистрация: 21.11.2012
Сообщений: 1

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

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получиться доступ к элементам не своей страницы? AlkaLoiD Общие вопросы Javascript 4 29.11.2010 12:47
Как в iframe с designmode=on отследить onClick ? negr78 Events/DOM/Window 2 24.10.2010 09:48
Как получить все атрибуты ноды? Victor_85 Events/DOM/Window 1 12.04.2010 17:58
Как правильно получить введенные данные в поле? buket jQuery 11 11.04.2010 19:59
dynatree.jquery - как получть доступ к родительскому узлу. ast-ross jQuery 0 23.03.2009 18:39