|
|
Да, просто замени весь шаблон на этот:
|

25.06.2012, 17:15
|
|
Интересующийся
|
|
Регистрация: 12.03.2009
Сообщений: 18
|
|
|
Доступ к содержимому 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?)
}
В чем причина такого поведения?
|
|

25.06.2012, 17:19
|
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
|
Cylos,
Попробуйте через index фрейма *способов много, но не все кроссбраузерны
window.frames[0].contentDocument.getElementById('date')
|
|

25.06.2012, 17:26
|
|
Интересующийся
|
|
Регистрация: 12.03.2009
Сообщений: 18
|
|
|
Deff, спасибо, но я сейчас не об этом.
Меня интересует, почему присвоив переменной DOC значение FRAM.contentDocument, я не получаю доступ к фрейму через переменную DOC? Ведь DOC в таком случае является ссылкой на документ фрейма.
|
|

25.06.2012, 17:50
|
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
|
Сообщение от Cylos
|
|
Меня интересует, почему присвоив переменной DOC значение FRAM.contentDocument, я не получаю доступ к фрейму через
|
1. Вы не дождались загрузки, без этого FRAM.contentDocument =null
апять жи - лучше =
DOC=window.frames[0].contentDocument
|
|

25.06.2012, 18:02
|
|
Интересующийся
|
|
Регистрация: 12.03.2009
Сообщений: 18
|
|
|
Deff, нет, причина не в этом, т.к. "прямой доступ" через FRAM срабатывает. И с запуском после окончания загрузки я тоже пробовал, эффект тот же.
P.S. Ваш вариант не работает.
|
|

25.06.2012, 18:11
|
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
|
Cylos,
А чо спорить, - Выложите полный код или ссылку
|
|

25.06.2012, 18:17
|
|
Интересующийся
|
|
Регистрация: 12.03.2009
Сообщений: 18
|
|
Я не спорю, я Вам сообщаю, как есть.
Вот код:
<!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>
Последний раз редактировалось Cylos, 25.06.2012 в 18:20.
|
|

25.06.2012, 18:22
|
 |
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
Сообщение от 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>
|
хм...а если переменные FRAM и DOC в функцию засунуть?
|
|

25.06.2012, 18:28
|
|
Интересующийся
|
|
Регистрация: 12.03.2009
Сообщений: 18
|
|
|
lord2kim, как ни странно - заработало.
Но ведь переменные созданные вне функции должны быть видимы внутри неё? Почему FRAM работает в обоих случаях, а DOC только, если создать внутри функции?
|
|

25.06.2012, 18:31
|
 |
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
Сообщение от Cylos
|
lord2kim, как ни странно - заработало.
Но ведь переменные созданные вне функции должны быть видимы внутри неё? Почему FRAM работает в обоих случаях, а DOC только, если создать внутри функции?
|
потому что они определены до загрузки iframe...а этих элементов не было в тот момент...
|
|
|
|