2012-07-23 111 views
0

试图获得一个居中弹出的时间设定值,像这样的东西后显示为中心的弹出的Javascript:延迟使用的setTimeout

<script type="text/javascript"> 
    <!-- 
    function popup(url) { 
    var width = 300; 
    var height = 200; 
    var left = (screen.width - width)/2; 
    var top = (screen.height - height)/2; 
    var params = 'width=' + width + ', height=' + height; 
    params += ', top=' + top + ', left=' + left; 
    params += ', directories=no'; 
    params += ', location=no'; 
    params += ', menubar=no'; 
    params += ', resizable=no'; 
    params += ', scrollbars=no'; 
    params += ', status=no'; 
    params += ', toolbar=no'; 
    newwin = window.open(url, 'windowname5', params); 
    if (window.focus) { 
     newwin.focus() 
    } 
    setTimeout(popup('`test/login.html'), 5000); 
    return false; 
} 

//--> 
//]]> 
</script> 

但弹出永远不会显示。如果我这样写:

<script type="text/javascript"> 
     <!-- 
     function popup(url) { 
      var width = 300; 
      var height = 200; 
      var left = (screen.width - width)/2; 
      var top = (screen.height - height)/2; 
      var params = 'width=' + width + ', height=' + height; 
      params += ', top=' + top + ', left=' + left; 
      params += ', directories=no'; 
      params += ', location=no'; 
      params += ', menubar=no'; 
      params += ', resizable=no'; 
      params += ', scrollbars=no'; 
      params += ', status=no'; 
      params += ', toolbar=no'; 
      newwin = window.open(url, 'windowname5', params); 
      if (window.focus) { 
       newwin.focus() 
      } 

      return false; 

     } 
     setTimeout(popup('`test/login.html'), 5000); 
     //--> 
     //]]> 
    </script> 

弹出显示立即,但然后我收到一个无效的参数错误。建议?

+1

setTimeo ut(function(){popup(''test/login.html')},5000); – 2012-07-23 19:11:58

回答

3

setTimout以函数作为其第一个参数。 popup(...)不返回函数。试试这个:

setTimeout(function() {popup('`test/login.html');}, 5000) 
+0

感谢斯科特,接受:) – abracassabra 2012-07-23 19:17:30

+0

+1,简而言之,甜美,正确。 ;) – canon 2012-07-23 20:58:59

2

在你的第一个例子中,你放在setTimeoutpopup()功能的体内。该函数的主体将在调用该函数之前不会运行。所以,你第二次尝试将setTimeout放在popup()机构之外是对的。

另一个问题是,你需要通过其中a function or codesetTimeout()

var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]); 
var timeoutID = window.setTimeout(code, delay); 

像这样:

setTimeout(function() { 
    popup('`test/login.html'); // provided that tick-mark is right... 
}, 5000); 

而现有的方法会立即执行popup(),并提供无功能的timout功能:

setTimeout(popup('`test/login.html'), 5000); 
+0

谢谢佳能:) – abracassabra 2012-07-23 19:18:29