Я в основном новичок Javascript'er, и я пробую его на веб-странице, которая, нажав кнопку, всплывает окно, которое показывает циклический «фильм», с изображениями из главного окна. Из того, что я пробовал в Googling, я чувствую, что я довольно близко, но что-то ускользает от меня.Javascript: всплывающее окно с фильмом из изображений в главном окне
Я знаю, что следует за результатами в двух отдельных вопросах, которые заслуживают двух отдельных сообщений. Но я полагаю, что оба они связаны с одной и той же проблемой/целью, возможно, это относится к одному (хотя и длинному) сообщению. Поэтому я надеюсь, что размер его не enfuriate людей слишком много ... ;-)
Во всяком случае, вот снимок того, что я думаю, что соответствующий код:
<html>
<head>
<script language="javascript">
function wait() {}
function anim() {
var timeout; var next;
var popuptitle='Movie';
var main=parent;
var popup=parent.open("","",
"width="+main.document.images[0].width+",height="+(main.document.images[0].height+40)+
"toolbar=no,location=no,directories=no,status=no,"+
"menubar=no,scrollbars=no,copyhistory=no,resizable=no");
popup.document.write('<html><head><title>'+popuptitle+'</title></head><body>'+
'<p align="center"><img name="anim" width="100%" alt=""></p>'+
'<p align="center"><button name="close" onclick="javascript:window.close();">Close</button></p>'+
'</body></html>');
/*while(true)*/
for(i=0; i<main.document.images.length; i++) {
next=main.document.images[i].src;
popup.document.images[0].src=next;
timeout=setTimeout('wait();',500);
}
}
</script>
</head>
<body><h1>Pictures + animation</h1>
<p><button name="exec" onclick="javascript:anim();">Animate (popup)</button></p>
<p><img src="img1.jpg"></p>
....
<p><img src="img16.jpg"></p>
</body>
</html>
я напечатал/адаптировали для релевантности; Надеюсь, я не сделал никаких опечаток ...
Я работаю с Debian Etch's Iceweasel (Firefox 2.x rebrand); Я не пробовал это с другими браузерами. В Iceweasel происходит следующее:
- Всплывающее окно появляется, как предполагается, но кажется, что цикл идет прямо к последней картине.
setTimeout
, похоже, не влияет на «паузу» между картинками. - Последний снимок отображается, и в строке состояния всплывающего окна отображается индикатор выполнения на середине, предлагая что-то загружать.
Так что мои вопросы:
- Как именно я должен использовать
setTimeout
вызов здесь? Я попытался заставить его вызвать «пустую» функцию, поэтому он работает как «пауза» в цикле сsetTimeout()
, где цикл обновляет всплывающее одиночное изображение из массива изображений главного окна. - Я нахожу, что если я загружу всплывающее окно, загрузив код HTML из внешнего файла (
anim.html
), строка состояния, похоже, отобразится из «индикатора выполнения», что окно ожидает ожидание перезагрузки. Я все еще собираюсь попробовать, если это где-то в другом месте, но я хочу знать, важно ли/важно, чтобы я загружал HTML-страницу из внешнего файла с помощьюwindow.open()
, а также загружал пустое окно и делал для него запись «написать» HTML. - Я прокомментировал
while(true)
в цикле, потому что в противном случае браузер перестает отвечать на запросы, а компьютер переходит на 100% процессор. Я мог бы сделатьif
в циклеfor
, чтобы установить счетчик обратно до нуля до последнего элемента, но есть ли еще один «элегантный» или «более подходящий» способ сделать это бесконечным циклом - или действительно лиwhile(true)
прекрасно?
Представляю ваши комментарии заранее и, если возможно, указатель на существующую библиографию, описывающую подобные решения.