Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Какое событие подобрать

Сообщения:  [1-10] 

 
 автор: ilyaILF   (26.05.2007 в 22:36)   письмо автору
 
   для: 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 и подгонка дизайна "под себя"

   
 
 автор: KARLSONCHIK   (26.05.2007 в 20:55)   письмо автору
 
   для: KARLSONCHIK   (26.05.2007 в 14:24)
 

Неужели больше никто не сможет мне помочь?! Я уверен, что это должно быть просто.

Почему с сайтами всё работает, а с *.pdf -- нет?

   
 
 автор: KARLSONCHIK   (26.05.2007 в 19:22)   письмо автору
 
   для: ilyaILF   (26.05.2007 в 16:14)
 

Хотя в моими пдф-ками ничего не получается... Всё равно картинка остается.
(я подгружаю не сайты, а документы формата *.pdf)

   
 
 автор: KARLSONCHIK   (26.05.2007 в 18:12)   письмо автору
 
   для: ilyaILF   (26.05.2007 в 16:14)
 

Большое спасибо -- всё работает!

   
 
 автор: ilyaILF   (26.05.2007 в 16:14)   письмо автору
 
   для: KARLSONCHIK   (26.05.2007 в 16:03)
 

Вы предложенный код хотя бы пробовали запускать, я взял специально для примера "тяжеловесные сайты", чтобы был виден момент окончания загрузки. И у вас не всплывает ваш Алерт и у вас не исчезает после загрузки картинка? И даже если установить изначальным параметром:
<div><img src="b_img7.jpg" style="visibility: hidden;" name="ris"></div>
Работоспособность кода не изменится.

   
 
 автор: KARLSONCHIK   (26.05.2007 в 16:03)   письмо автору
 
   для: ilyaILF   (26.05.2007 в 15:37)
 

Вот с помощью вашего скрипта такой же эффект, что и был у меня, а именно:
при первоначально загрузке страницы (а не документа во фрейм) рисунок убирается (правда у вас это тоже не срабатывало, чуть-чуть исправить пришлось) и всё. После загрузки документа рисунок появляется и уже не исчезает.

А чтобы избежать первоначальной загрузки, у меня в CSS прописывается по умолчанию hidden. ;-)

Т.е. либо есть какое-то другое событие, либо мы чего-то не учитываем. В интернете ответа на свой вопрос в общем пока не нашел... :-(

   
 
 автор: ilyaILF   (26.05.2007 в 15:37)   письмо автору
 
   для: 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>
Только Хонды с Кавасаками замените на более подходящую информацию. :-)

   
 
 автор: KARLSONCHIK   (26.05.2007 в 15:12)   письмо автору
 
   для: 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 гифчик должен исчезнуть. Всё просто.

Но что-то не фурычит...

Хотя я понял, почему ваш вариант не годится: вы не учли, что в этот фрейм загружается уйма документов, а НЕ один!

   
 
 автор: ilyaILF   (26.05.2007 в 15:02)   письмо автору
 
   для: KARLSONCHIK   (26.05.2007 в 14:24)
 

Не совсем понятно, почему вам не нравится событие onload, оно же вешается именно на iframe и сигнализирует о загрузке документа именно в iframe:
<iframe src="http://www.honda.com" onload="alert('Уф, загрузились!');" style="width: 400px; height: 400px;">
</iframe>

   
 
 автор: KARLSONCHIK   (26.05.2007 в 14:24)   письмо автору
 
 

В результате работы HTML и JavaScript в iframe загружаются файлы.
Нужно чтобы при загрузке каждого из этих файлов срабатывала функция JS.

А вопрос у меня, собственно, такой: каким событием для этого нужно воспользоваться?

Пояснение: onLoad не подходит, ибо оно соответствует загрузке самого фрейма, а не документа в него.
Если кто знает, не молчите...

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования