Javascript setTimeout不起作用

时间:2012-07-07 10:10:42

标签: javascript settimeout

我理解这个问题已被多次询问,但是我无法找到问题的解决方案,尽管搜索谷歌和stackoverflow并应用各种尝试。

这是我的JS:

    function Redirect(id)
    {
        window.open("go.php?id=" + id, "_blank");
    }

    function LinkPop(id)
    {           
        xmlObj = new XMLHttpRequest();
        xmlObj.open("GET", "pop.php?id=" + id, false);
        xmlObj.send();

        document.getElementById(id).style.fontSize = xmlObj.responseText + "px";
        document.getElementById(id).title = "Clicked " + (xmlObj.responseText - 18) + " times";

        window.setTimeout(function(){Redirect(id);}, 2000);
    }

除了2秒延迟和打开新页面之外,一切都有效。正如你所看到的,我尝试过一个没有帮助的闭包。我希望我错过了一些非常基本的东西......

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您正在尝试打开弹出窗口。所有现代浏览器都有弹出窗口阻止程序,除非在受限制的情况下,否则会阻止您这样做,因为过去滥用此功能。

特别是,浏览器通常仅允许弹出窗口直接响应与网页的交互(例如,点击)。超时事件不是交互,即使它是为响应早期交互而触发的,因此不允许您打开默认设置的窗口。

您可以直接打开弹出窗口(您可以尝试将其打开为pop-under并稍后将其聚焦以将其置于前面,尽管这并不总是可靠的)。或者,可能更好,忘记弹出窗口,只需在当前页面上进行简单的重定向。