2012-05-15 2 views
1

Я следил за тем, что все остальные говорили для остальных, но я получаю «нуль» или «неопределенный».Получить элемент из iFrame Возвращает Null/undefined?

var frame=win.getElementsByTagName("iframe")[0]; 
var innerDoc = (frame.contentDocument) 
? frame.contentDocument 
: frame.contentWindow.document; 
alert(innerDoc.getElementById("input")); 
+0

Что вы хотите сказать? И у вас действительно есть элемент с 'id =" input "? – Madbreaks

+0

Что не определено? getElementsByTageName, NodeList, frame, innerDoc, getElementById, аргумент предупреждения? – Bergi

+0

Знаете ли вы о политике того же происхождения? – Bergi

ответ

2

Попробуйте этот пример

<html> 
<head> 
    <title>Iframe Test</title> 
    <script type="text/javascript"> 
    window.onload= function(){ 
     var frame=document.getElementsByTagName("iframe")[0]; 
     var innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document; 
     alert(innerDoc.getElementById("input")); 
    } 
    </script> 

</head> 
<body> 
    <div> 
     <iframe src="test.htm" /> 
    </div> 
</body> 
</html> 

и источник Test.htm

<html> 
<head> 
    <title>A test Page</title> 
</head> 
<body> 
    <div id="input"> 
    </div> 
</body> 
</html> 

Он работал в моей локальной машине.

+0

Я работаю в определенном браузере, поэтому нет никаких проблем с содержимым contentWindow или contentDocument. По какой-то причине ваш скрипт сделал мою страницу непригодной для использования. Синтаксическая ошибка, которую я не могу найти. НО! Когда я просто делаю это: var frame = win.getElementsByTagName ("iframe") [0]; var innerDoc = frame.contentDocument; предупреждение (internalDoc); Сценарий предупреждает «Object HTMLDocument». Это говорит мне, что это правильно, не так ли? Я предполагаю, что реальный вопрос: если он говорит, что это объект HTMLDocument, что я должен поставить DIRECTLY после innerDoc? Не помешаю ли я поставить «.document.whatever» или просто «что бы ни случилось»? – RickyAYoder

+0

@RickyAYoder, Извините, что слышу это. Я пробовал выше в IE9 и FireFox и отлично работал, то есть возвращает элемент в Iframe. Вы вызываете свой скрипт, когда DOM готов/не готов. Если возможно, проверьте это. – Hoque

Смежные вопросы