|
|
|
| В результате работы HTML и JavaScript в iframe загружаются файлы.
Нужно чтобы при загрузке каждого из этих файлов срабатывала функция JS.
А вопрос у меня, собственно, такой: каким событием для этого нужно воспользоваться?
Пояснение: onLoad не подходит, ибо оно соответствует загрузке самого фрейма, а не документа в него.
Если кто знает, не молчите... | |
|
|
|
|
|
|
|
для: KARLSONCHIK
(26.05.2007 в 14:24)
| | Не совсем понятно, почему вам не нравится событие onload, оно же вешается именно на iframe и сигнализирует о загрузке документа именно в iframe:
<iframe src="http://www.honda.com" onload="alert('Уф, загрузились!');" style="width: 400px; height: 400px;">
</iframe>
|
| |
|
|
|
|
|
|
|
для: ilyaILF
(26.05.2007 в 15:02)
| | Вот простой пример, который сделан таким способом. Он у меня не срабатывает:
............................
<link rel="stylesheet" href="styles.css" type="text/css">
</head>
<script language="JavaScript">
function onIFrameLoad()
{ris.style.visibility = "hidden";
alert("бла-бла!")}
function click_a()
{ris.style.visibility = "visible";}
</script>
<body>
<A HREF="journal.pdf" target="ifr" onclick='click_a();'>открыть</A><br><br>
<iframe onload='onIFrameLoad();' name="ifr"></iframe>
<div><img src="2.gif" name="ris"></div>
..........................
|
Хотя я не спорю -- возможно он составлен неправильно. Задача этой программки -- показать, что идет загрузка документа во фрейм (самый простой вариант, который пришел в голову), т.е. при клике на "открыть" появляется гифчик, а при загрузке информациии в iframe гифчик должен исчезнуть. Всё просто.
Но что-то не фурычит...
Хотя я понял, почему ваш вариант не годится: вы не учли, что в этот фрейм загружается уйма документов, а НЕ один! | |
|
|
|
|
|
|
|
для: KARLSONCHIK
(26.05.2007 в 15:12)
| | Пробуйте так:
<script type="text/javascript">
var flag=0;
function onIFrameLoad()
{
if(flag!=0){
document.getElementsByName('ris')[0].style.visibility = "hidden";
alert("бла-бла!");
}else{
flag=1; //Это чтобы "обойти" первоначальную загрузку
return;
}
}
function click_a(){
document.getElementsByName('ris')[0].style.visibility = "visible";
}
</script>
<a href="http://www.honda.com" target="ifr" onclick='click_a();'>honda</a><br><br>
<a href="http://www.yamaha.com" target="ifr" onclick='click_a();'>yamaha</a><br><br>
<a href="http://www.kawasaki.com" target="ifr" onclick='click_a();'>kawasaki</a><br><br>
<iframe onload="onIFrameLoad();" name="ifr"></iframe>
<div><img src="2.gif" name="ris"></div>
| Только Хонды с Кавасаками замените на более подходящую информацию. :-) | |
|
|
|
|
|
|
|
для: ilyaILF
(26.05.2007 в 15:37)
| | Вот с помощью вашего скрипта такой же эффект, что и был у меня, а именно:
при первоначально загрузке страницы (а не документа во фрейм) рисунок убирается (правда у вас это тоже не срабатывало, чуть-чуть исправить пришлось) и всё. После загрузки документа рисунок появляется и уже не исчезает.
А чтобы избежать первоначальной загрузки, у меня в CSS прописывается по умолчанию hidden. ;-)
Т.е. либо есть какое-то другое событие, либо мы чего-то не учитываем. В интернете ответа на свой вопрос в общем пока не нашел... :-( | |
|
|
|
|
|
|
|
для: KARLSONCHIK
(26.05.2007 в 16:03)
| | Вы предложенный код хотя бы пробовали запускать, я взял специально для примера "тяжеловесные сайты", чтобы был виден момент окончания загрузки. И у вас не всплывает ваш Алерт и у вас не исчезает после загрузки картинка? И даже если установить изначальным параметром:
<div><img src="b_img7.jpg" style="visibility: hidden;" name="ris"></div>
| Работоспособность кода не изменится. | |
|
|
|
|
|
|
|
для: ilyaILF
(26.05.2007 в 16:14)
| | Большое спасибо -- всё работает! | |
|
|
|
|
|
|
|
для: ilyaILF
(26.05.2007 в 16:14)
| | Хотя в моими пдф-ками ничего не получается... Всё равно картинка остается.
(я подгружаю не сайты, а документы формата *.pdf) | |
|
|
|
|
|
|
|
для: KARLSONCHIK
(26.05.2007 в 14:24)
| | Неужели больше никто не сможет мне помочь?! Я уверен, что это должно быть просто.
Почему с сайтами всё работает, а с *.pdf -- нет? | |
|
|
|
|
|
|
|
для: KARLSONCHIK
(26.05.2007 в 20:55)
| | Все-таки есть один способ сделать то, что вы хотите, благодаря тому, что PDF файл при загрузке открывает приложение Adobe Reader, которое перекрывает все, что происходит на странице (кстати, конец загрузки файла PDF практически определить нельзя, по-моему, так как это приложение ничего общего с объектами документа HTML не имеет, и соответственно не получается обратиться к нему или определить конец загрузки).
Так что смысл состоит в следующем, надо абсолютно спозиционировать картинку над IFRAME-ом и загрузку файла PDF осуществить с сервера при помощи файла PHP, который как-раз и открывает файл PDF, причем откроется он только после того, как загрузится файл PDF полностью, а в течении всего этого времени пользователь будет видеть перед собой абсолютноспозиционированную над IFRAME-ом картинку. Когда же файл PDF загрузится, то он (вернее приложение Adobe Reader) по-просту перекроет (на этом и основан способ)абсолютноспозиционированную над IFRAME-ом картинку.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Sample</title>
</head>
<body>
<script type="text/javascript">
function click_a(){
document.getElementById('ris').style.display = 'block';
}
</script>
<div id="ris" style="position: absolute; top: 130px; left: 10px; background: #ff0; display: none; width: 500px; height: 146px; text-align: center;"><img style="border: 1px solid #f00; height: 146px;" src="honda.jpg" /></div>
<a href="myphp.php" target="ifr" onclick='click_a();'>honda</a><br><br>
<a href="http://www.yamaha.com" target="ifr" onclick='click_a();'>yamaha</a><br><br>
<a href="http://www.kawasaki.com" target="ifr" onclick='click_a();'>kawasaki</a><br><br>
<iframe bgcolor="red" style="background: #f00 url('honda.jpg') no-repeat center; width: 500px" name="ifr" onload="onIFrameLoad()" onfocus="alert('');"></iframe>
</body>
</html>
| И файл PHP (myphp.php) который будет вызываться по клику (исходник PHP-кода http://www.w3schools.com/php/func_http_header.asp)
<?php
header("Content-type:application/pdf");// It will be called downloaded.pdf
readfile("http://www.split-sistema.ru/download/ins_fujitsu_asy7.pdf");
?>
| Причем все броузеры одинаково отнеслись к этому способу. :-)
Я думаю, что дальнейшая модификация кода труда не составит - передача необходимого адреса PDF-файла в файл PHP и подгонка дизайна "под себя" | |
|
|
|