jQuery脚本无法在IE中运行?

时间:2010-11-13 17:19:22

标签: javascript jquery internet-explorer

我有以下脚本,它位于我的HTML页面顶部调用的外部文件中。我的想法是我有一个ping数据库的Ajax请求,当数据库更新时,Ajax会看到这个并调用下面的函数。它在Firefox中运行良好,但在IE中根本不起作用。有什么建议吗?

var GoPopUp = function(){
  $('#PopNewCall').fadeIn('slow');
  PageRefreshTimer();
}

//Function which refreshes page after a certain number of seconds with no user Inputs
var PageRefreshTimer = function(){
  setTimeout("location.reload(true);",30000); //1,000 = 1 second
}

//Function which refreshes page after user has clicked refresh
var RefreshNow = function(){
  setTimeout("location.reload(true);",0);
}

编辑:如果有人好奇,我正在使用直接的javascript for ajax。它在下面。我在页面加载时调用它,然后它继续调用自己循环。

function checkRefresh(str)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
 else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
    if (document.getElementById("lastCallID").innerHTML < xmlhttp.responseText)
    {
        setTimeout(GoPopUp(), 100); 
    }
    else
    {
        setTimeout('checkRefresh()',15000)
    }

  }
 }
 xmlhttp.open("GET","getnewid.php",true);
 xmlhttp.send();
 }

2 个答案:

答案 0 :(得分:2)

这不是答案,但您应该替换

        setTimeout("location.reload(true);",0);

setTimeout(function(){ location.reload(true) }, 0);

由于前者很慢并导致进行额外评估。

编辑#2:将GoPopUp()更改为GoPopUp,您可能不想立即执行它。与checkRefresh相同。

if (document.getElementById("lastCallID").innerHTML < xmlhttp.responseText)
    {
        setTimeout(GoPopUp, 100); 
    }
    else
    {
        setTimeout(checkRefresh,15000)
    }

答案 1 :(得分:2)

而不是:

setTimeout(function(){ location.reload(true) }, 0);

你应该写:

location.reload(true);