Доступ к содержимому iFrame
Всем привет, столкнулся со странной проблемой. При попытке получить доступ к DIV в iFrame получаю NULL в том случае, если обращаюсь к нему с помощью укороченной записи, т.е.:
var FRAM = document.getElementById("frame"); var DOC = FRAM.contentDocument; if(DOC == FRAM.contentDocument) { alert(FRAM.contentDocument.getElementById('date'));//выведет Object HTML... alert(DOC.getElementById('date'));//выведет null (WTF?) } В чем причина такого поведения? |
Cylos,
Попробуйте через index фрейма *способов много, но не все кроссбраузерны window.frames[0].contentDocument.getElementById('date') |
Deff, спасибо, но я сейчас не об этом.
Меня интересует, почему присвоив переменной DOC значение FRAM.contentDocument, я не получаю доступ к фрейму через переменную DOC? Ведь DOC в таком случае является ссылкой на документ фрейма. |
Цитата:
апять жи - лучше = DOC=window.frames[0].contentDocument |
Deff, нет, причина не в этом, т.к. "прямой доступ" через FRAM срабатывает. И с запуском после окончания загрузки я тоже пробовал, эффект тот же.
P.S. Ваш вариант не работает. |
Cylos,
А чо спорить, - Выложите полный код или ссылку |
Я не спорю, я Вам сообщаю, как есть.
Вот код: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <iframe src='index.php' id='frame'></iframe> <script type='text/javascript'> var FRAM = document.getElementById("frame"); var DOC = FRAM.contentDocument; document.getElementById("frame").onload = function() { alert(FRAM.contentDocument.getElementById('date'));//выведет Object HTML.. alert(DOC.getElementById('date'));//выведет NULL(WTF?) } </script> </body> </html> |
Цитата:
|
lord2kim, как ни странно - заработало.
Но ведь переменные созданные вне функции должны быть видимы внутри неё? Почему FRAM работает в обоих случаях, а DOC только, если создать внутри функции? |
Цитата:
|
Часовой пояс GMT +3, время: 12:10. |