Доступ к содержимому 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, время: 09:40. |