[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу взять данные из <iframe>
Gandjubas
HTML
<html>
<head>
<title>Load Data on the fly</title>
<style type="text/css">
.cent {position: absolute; left: 25%; top: 20%; border-width: 3; border-color: #3399ff; border-style: solid; width: 50%; height: 50%; overflow-x: hidden; overflow-y: auto; z-index: 2;}
in {width: 100%; height: 100%;}
</style>
<script language="JavaScript">
function loadDataFromFrame()
{
parent.fload.location = 'load.html';
var data = parent.fload.document.getElementById('sss').innerHTML;
document.getElementById('loading').innerHTML = data;
}
</script>
</head>
<body onLoad="loadDataFromFrame();">
<div class="cent" id="show_hide">
<div style="position: relative; width: 100%; height: 10px; border-width: 0; padding: 0; margin: 0; z-index: 3; background-color: #99ff99;" align="right"><img src="close_w.gif" border="0"></div>
<div id="loading" class="in"></div>
</div>
<iframe width="20%" height="70%" border="4" style="display: yes;" name="fload"></iframe>
12
</body>
</html>


load.html
HTML
<html>
<body>
<div id="sss">
<table width="100%" cellspacing="0">
<tr>
<td colspan="2" bgcolor="#99ff99">
<b>!Что посмотреть</b>
</td>

</tr>
<tr>
<td width="100px"><b>Stas</b></td>
<td> </td>
</tr>
<tr>
<td colspan="2"> Классная вешь!<br>Обязательно посмотрите!<br>Лучше смотреть сам трэйлеры нежели комментарии к ним каких-то оболдуев.
</td>
</tr>
<tr>
<td width="100px"><b>Gesser</b></td>
<td> </td>
</tr>
<tr>
<td colspan="2"> Про балбесов мягко сказано...
</td>
</tr>
</table>
</div>
</body>
</html>


В пятом IE и Опере 9.10 не работает.
Должон, как видите содержимое из ифрэйма подгрузившегося писать в див.
а эксплорер пишет, что объект не поддерживает метод или что-то такое.
В фоксе 2.0 и IE 6 работает.



Спустя 4 часа, 4 минуты, 50 секунд (26.04.2007 - 11:37) Timok написал(а):
что бы получить содержимое документа во фрейме надо использовать contentWindow
Код
document.getElementById("iframe_id").contentWindow.document.getElementById("sss").innerHTML;

Спустя 3 часа, 48 минут, 19 секунд (26.04.2007 - 15:25) Gandjubas написал(а):
О спасибо тебе, всемогущий Тимок!

Вечерком проверюsmile.gif

Спустя 17 часов, 37 минут, 44 секунды (27.04.2007 - 09:03) Gandjubas написал(а):
А метод этот только для Оперы?
В общем, всё у меня работает.
Только одна проблема есть:
  • присваиваю src для фрэйма
  • считываю содержимое фрэйма
  • присваиваю содержанию скрытого дива содержание фрэйма
  • делаю див видимым
если всё так оставить то по нажатию на кнопку див показывается пустым
если после второго шага поставить алерт, то после нажатия на кнопку окей на алерте, див показывается с необходимым содержимым.
Я так подозреваю, что это всё из-за времени загрузки содержимого фрэйма.
Вот тут на форуме есть "быстрое редактирование". И когда нажимаешь на кнопку, то появляется картинка "Загрузка" (красивая такая и двигающаяся) а после сама форма.
Вот как мне сделать что-то типа этого. Не обязательно с картинками. Просто нужна проверка на окончание загрузки содержимого из фрэйма.

Спустя 1 час, 28 минут, 34 секунды (27.04.2007 - 10:31) Timok написал(а):
короче вот пример:
Код
<style type="text/css">
#div{
background:#eee;
display:none;
width:200px;
height:200px;
}
#iframe{
width:200px;
height:200px;
}
</style>

<div id="div"></div>
<iframe id="iframe" src="xxxxx.html"></iframe>
<button onclick="changeMode();">баттон</button>

<script type="text/javascript">
function changeMode()
{
    var div = document.getElementById("div");
    var iframe = document.getElementById("iframe");

    if (! div.offsetHeight) {
        div.innerHTML = iframe.contentWindow.document.body.innerHTML;
        div.style.display = "block";
    } else {
        div.style.display = "none";
    }
}
</script>

работает одинаково во всех браузерах
возможно ошибка у тебя где-то в другом месте. Поставь firefox и firebug к нему и посмотри...

или опиши задачу подробнее, т.е. что именно ты делаешь? Для динамической подгрузки данных есть аякс...

Спустя 1 день, 19 минут, 32 секунды (28.04.2007 - 10:51) Gandjubas написал(а):
Цитата(Timok @ 27.4.2007, 7:31) [snapback]19225[/snapback]
короче вот пример:
...
работает одинаково во всех браузерах

в пятом IE не работает
Цитата(Timok @ 27.4.2007, 7:31) [snapback]19225[/snapback]
опиши задачу подробнее, т.е. что именно ты делаешь?

есть N ссылок.
когда нажимаешь на одну из них, появляется окошко (ДИВ) посередине окна с определённым содержимым, которое генерируется PHP-скриптом.
Цитата(Timok @ 27.4.2007, 7:31) [snapback]19225[/snapback]
Для динамической подгрузки данных есть аякс...

Я сходил на форум http://forum.vingrad.ru/forum/Javascript.html и там мне посоветовали сделать скрытый фрэйм ссылку "направить" туда и присваивать диву содержимое из фрэйма.

Спустя 49 минут, 27 секунд (28.04.2007 - 11:40) Timok написал(а):
Цитата
в пятом IE не работает

недобраузеры не учитываю smile.gif

Спустя 54 минуты, 45 секунд (28.04.2007 - 12:35) Gandjubas написал(а):
Цитата(Timok @ 28.4.2007, 8:40) [snapback]19413[/snapback]
Цитата
в пятом IE не работает

недобраузеры не учитываю smile.gif

а 5.5 тоже недоброузер?

Спустя 4 часа, 20 минут, 3 секунды (28.04.2007 - 16:55) Timok написал(а):
да я вообще осла недоблюбливаю smile.gif 5.5 у меня нету, тестить там не удаётся.
Попробуй заменить document.getElementById("id") на document.all("id") может прокатит

Спустя 3 дня, 17 часов, 11 минут, 17 секунд (2.05.2007 - 10:06) Gandjubas написал(а):
Проблема решилась иначе!
Я вместо того чтобы брать содержимое из скрытого фрэйма в див, поместил этот фрэйм в див и просто загружаю во фрэйме документ и делаю видимым див.
Всё гениальное просто (скромно - rolleyes.gif )


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.