Javascript设置超时不起作用

Javascript设置超时不起作用,javascript,settimeout,Javascript,Settimeout,我知道这个问题已经被问过很多次了,但是尽管搜索了google和stackoverflow并进行了各种尝试,我还是找不到解决问题的方法 以下是我的JS: function Redirect(id) { window.open("go.php?id=" + id, "_blank"); } function LinkPop(id) { xmlObj = new XMLHttpRequest();

我知道这个问题已经被问过很多次了,但是尽管搜索了google和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秒的延迟和新页面的打开之外,一切正常。正如你所看到的,我尝试了一个没有帮助的结束。我想我错过了一些非常基本的东西


谢谢您的帮助。

您正在尝试打开一个弹出窗口。所有现代浏览器都有弹出窗口拦截器,除非在限制的情况下,否则会阻止您这样做,因为以前滥用了此功能

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


您可以直接打开弹出窗口(您可以尝试在下方以弹出窗口的形式打开它,稍后将其聚焦到前面,尽管这并不总是可靠的)。或者,也许更好的办法是,忘记弹出窗口,只需在当前页面上执行一个简单的重定向。

在我看来还可以。到底发生了什么?错误?
重定向
功能是否真的被命中?此外,在JS中,最好将大括号放在同一行,并且不要大写函数名,除非您计划实例化它们,而不仅仅是调用它们。确保存在具有相应id的元素(
document.getElementById(id)
不能为null)。我将大括号放在同一行上,我使用PHP和C编写特定的方式。重定向()函数似乎没有被调用。我用一个alert()调用测试了它。@Jasd ID匹配得很好。与被操纵的DOM相关的一切都很好。我正在制作我自己的标签云,大约过了一秒钟左右,允许字体增加被注意到,然后我希望用户被引导到DB中ID指示的位置。为什么我的帖子会被标记下来?到目前为止,这是一个独特的问题,因为没有人能够解决它?