2012-05-04 37 views
1

我正在制作一个备用现实游戏,我的任务是创建一个关卡,玩家必须专注于在关闭弹出窗口的同时在一段时间内回答数学问题。目标是让弹出窗口产生他们自己的弹出窗口,这样如果用户忽略它们太久,事情就会很快失去控制。为了确保人们不会让他们的弹出窗口阻挡,数学问题也将出现在弹出窗口中。不幸的是,我不知道Javascript,所以我一直依靠从网上复制代码。我该如何创建一个弹出窗口来创建其他弹出窗口?

我的计划是有一个基本页面,每5秒钟弹出一个名为focus.html的页面(或者仍然决定时间)。 focus.html会每5秒钟弹出一个focus.html文件。所以如果你打开一个五秒钟,你将有两个关闭,等等。理论上。

但由于某些原因,弹出窗口不会创建自己的弹出窗口。如果我打开基本页面,focus.html仅在基页面调用时弹出。如果我手动打开focus.html,弹出窗口只会出现在主浏览器中的focus.html副本中。

为focus.html代码:

<head> 

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

<!-- <link rel="stylesheet" href="game.css" type="text/css" media="screen" /> --> 

    <title>Focus</title> 


    <SCRIPT LANGUAGE="JavaScript"> 

     <!-- Begin 
     closetime = 0; // 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 = "focus.html"; 
      width = 500; // width of window in pixels 
      height = 500; // height of window in pixels 
      delay = 5; // time in seconds before popup opens 
      timer = setTimeout("Start1(url1, width, height)", delay*1000); 
     } 

     function doPopup2() { 
      url1 = "focus.html"; 
      width = 500; // width of window in pixels 
      height = 500; // height of window in pixels 
      delay = 10; // time in seconds before popup opens 
      timer = setTimeout("Start1(url1, width, height)", delay*1000); 
     } 

        function doPopup3() { 
      url1 = "focus.html"; 
      width = 500; // width of window in pixels 
      height = 500; // height of window in pixels 
      delay = 15; // time in seconds before popup opens 
      timer = setTimeout("Start1(url1, width, height)", delay*1000); 
     } 



     // End --> 
    </script> 

</head> 



<body OnLoad="doPopup1(); doPopup2(); doPopup3();"> 

    <br /> 

    <p>Remember to FOCUS.</p> 


</body> 

+0

浏览器只会打开一个特定页面的任何给定名称的弹出窗口,所以传递''preview''作为'window.open()'的第二个参数会导致您的问题。改为传递'undefined'。 –

+0

不要将字符串传递给'setTimeout',它使用'eval'。传递函数:'setTimeout(function(){Start1(url1,width,height);},delay * 1000)' –

+0

谢谢,它工作完美。 – CowGoes

回答

1
preview = window.open(URL1, "preview", windowprops); 

当打开第二个窗口,它将具有相同的名称作为第一个,所以你永远不会能够打开多个。如果你不传递一个名字(空字符串),你将能够打开很多。

+0

谢谢,工作就像一个魅力。我会赞成,但我没有足够的代表。 – CowGoes

+0

@CowGoes你可以接受,这更好。点击投票柜台下的大复选标记符号 –