Javascript Pop Ups - PullRequest
       8

Javascript Pop Ups

2 голосов
/ 07 января 2011

Мой босс попросил страницу, которая не изменится для загрузки двух всплывающих окон.Я нашел код и отредактировал его так, как я думал, он должен делать, но он загружает только последнее событие onLoad.Я дизайнер, и я помог с созданием веб-страниц, но Javascript настолько далек от того, что я могу понять.Я уже научился использовать одно всплывающее окно и провел некоторое время, изучая таймауты, но я не могу заставить его работать с несколькими всплывающими функциями.Если бы у вас был момент, вы бы посмотрели?Спасибо:)

ч

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>H's Page 1</title>

<SCRIPT LANGUAGE="JavaScript">
<!-- Original:  Ronnie T. Moore, Editor -->
<!-- Web Site:  The JavaScript Source -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
closetime = 3; // Close window after __ number of seconds?
// 0 = do not close, anything else = number of seconds

function Start1(URL, WIDTH, HEIGHT) {
windowprops = "left=50,top=50,width=" + WIDTH + ",height=" + HEIGHT;
preview = window.open(URL, "preview", windowprops);
if (closetime) setTimeout("preview.close();", closetime*1000);
}

function doPopup1() {
    url = "http://www.google.com";
    width = 1680;  // width of window in pixels
    height = 1050; // height of window in pixels
    delay = 10;    // time in seconds before popup opens
    timer = setTimeout("Start1(url, width, height)", delay*1000);
    }   

closetime = 3; // Close window after __ number of seconds?


function Start2(URL, WIDTH, HEIGHT) {
windowprops = "left=50,top=50,width=" + WIDTH + ",height=" + HEIGHT;
preview = window.open(URL, "preview", windowprops);
if (closetime) setTimeout("preview.close();", closetime*1000);
}


function doPopup2() {
    url = "http://www.yahoo.com";
    width = 1680;  // width of window in pixels
    height = 1050; // height of window in pixels
    delay = 5;    // time in seconds before popup opens
    timer = setTimeout("Start2(url, width, height)", delay*1000);
    }



//  End -->
</script>

<!-- STEP TWO: Insert the onLoad event handler into your BODY tag  -->

<!-- Script Size:  1.27 KB -->

</head>

<body OnLoad="doPopup1(); doPopup2();">
<p>My page text.</p>
<p>My page text.</p>
<p>My page text.</p>
<p>My page text.</p>
</body>
</html>

Ответы [ 3 ]

1 голос
/ 07 января 2011

Я немного очистил ваш код и создал замыкания для лучшей обработки вашего settimeout.
Если вам когда-нибудь понадобится изменить это, я думаю, вам будет проще вызывать settimeout таким образом (вы столкнетесь с меньшими затратамипроблемы с глобальными переменными).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>H's Page 1</title>

<SCRIPT LANGUAGE="JavaScript">
<!-- Original:  Ronnie T. Moore, Editor -->
<!-- Web Site:  The JavaScript Source -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin

var closetime = 3; // Close window after __ number of seconds?
// 0 = do not close, anything else = number of seconds


function Start1(URL, WIDTH, HEIGHT) {
    var windowprops = "left=50,top=50,width=" + WIDTH + ",height=" + HEIGHT;
    var preview = window.open(URL, "preview", windowprops);
    if (closetime) {
        var timer = setTimeout(preview.close, closetime * 1000);
    }
}

function doPopup1() {

    function startCaller() {
        var url = "http://www.google.com";
        var width = 1680; // width of window in pixels
        var height = 1050; // height of window in pixels
        Start1(url, width, height);
    }
    var delay = 10; // time in seconds before popup opens    
    setTimeout(startCaller, delay * 1000);
}


function doPopup2() {

    function startCaller() {
        var url = "http://www.yahoo.com";
        var width = 1680; // width of window in pixels
        var height = 1050; // height of window in pixels
        Start1(url, width, height);
    }
    var delay = 5; // time in seconds before popup opens    
    setTimeout(startCaller, delay * 1000);
}


//  End -->
</script>

<!-- STEP TWO: Insert the onLoad event handler into your BODY tag  -->

<!-- Script Size:  1.27 KB -->

</head>

<body onload="doPopup1(); doPopup2();">
<p>My page text.</p>
<p>My page text.</p>
<p>My page text.</p>
<p>My page text.</p>
</body>
</html>
0 голосов
/ 07 января 2011

Вам нужно закрытие, чтобы заставить window.close работать во время ожидания. Не то чтобы это не сработало, если вы просто открыли html-файл в браузере (по крайней мере, на FF3.6), но сработало бы, если бы вы поместили его на свой веб-сервер.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>H's Page 1</title>

<SCRIPT LANGUAGE="JavaScript">
<!-- Original:  Ronnie T. Moore, Editor -->
<!-- Web Site:  The JavaScript Source -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin

var closetime = 3; // Close window after __ number of seconds?
// 0 = do not close, anything else = number of seconds

function doPopup(url, delay) {
    var width = 1680; // width of window in pixels
    var height = 1050; // height of window in pixels
    setTimeout(function () {
        var windowprops = "left=50,top=50,width=" + width + ",height=" + height;
        var preview = window.open(url, "preview", windowprops);
        if (closetime) {  setTimeout(function(){
            preview.close();
        }, closetime * 1000); }
    } , delay * 1000);
}


//  End -->
</script>

<!-- STEP TWO: Insert the onLoad event handler into your BODY tag  -->

<!-- Script Size:  1.27 KB -->

</head>

<body onload="doPopup('http://www.google.com', 1); doPopup('http://www.yahoo.com', 2);">
<p>My page text.</p>
<p>My page text.</p>
<p>My page text.</p>
<p>My page text.</p>
</body>
</html>
0 голосов
/ 07 января 2011

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

вы перезаписываете переменные url своими тайм-аутами, хотя в Firefox мне подходит следующее:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>H's Page 1</title>

        <SCRIPT LANGUAGE="JavaScript">
            <!-- Original:  Ronnie T. Moore, Editor -->
            <!-- Web Site:  The JavaScript Source -->

            <!-- This script and many more are available free online at -->
            <!-- The JavaScript Source!! http://javascript.internet.com -->

            <!-- Begin
            closetime = 3; // Close window after __ number of seconds?
            // 0 = do not close, anything else = number of seconds

            function Start1(URL1, WIDTH, HEIGHT) {
                windowprops = "left=50,top=50,width=" + WIDTH + ",height=" + HEIGHT;
                preview = window.open(URL1, "preview", windowprops);
                if (closetime) {
                    setTimeout("preview.close();", closetime*1000);
                }
            }

            function doPopup1() {
                url1 = "http://www.google.com";
                width = 1680;  // width of window in pixels
                height = 1050; // height of window in pixels
                delay = 5;    // time in seconds before popup opens
                timer = setTimeout("Start1(url1, width, height)", delay*1000);
            }   

            function Start2(URL2, WIDTH, HEIGHT) {
                windowprops = "left=50,top=50,width=" + WIDTH + ",height=" + HEIGHT;
                preview = window.open(URL2, "preview", windowprops);
                if (closetime) {
                    setTimeout("preview.close();", closetime*1000);
                }
            }

            function doPopup2() {
                url2 = "http://www.yahoo.com";
                width = 1680;  // width of window in pixels
                height = 1050; // height of window in pixels
                delay = 10;    // time in seconds before popup opens
                timer = setTimeout("Start2(url2, width, height)", delay*1000);
            }

            //  End -->
        </script>

        <!-- STEP TWO: Insert the onLoad event handler into your BODY tag  -->

        <!-- Script Size:  1.27 KB -->

    </head>

    <body OnLoad="doPopup1(); doPopup2();">
        <p>My page text.</p>
        <p>My page text.</p>
        <p>My page text.</p>
        <p>My page text.</p>
    </body>
</html>
...