我理解这个问题已被多次询问,但是我无法找到问题的解决方案,尽管搜索谷歌和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秒延迟和打开新页面之外,一切都有效。正如你所看到的,我尝试过一个没有帮助的闭包。我希望我错过了一些非常基本的东西......
感谢您的帮助。
答案 0 :(得分:1)
您正在尝试打开弹出窗口。所有现代浏览器都有弹出窗口阻止程序,除非在受限制的情况下,否则会阻止您这样做,因为过去滥用此功能。
特别是,浏览器通常仅允许弹出窗口直接响应与网页的交互(例如,点击)。超时事件不是交互,即使它是为响应早期交互而触发的,因此不允许您打开默认设置的窗口。
您可以直接打开弹出窗口(您可以尝试将其打开为pop-under并稍后将其聚焦以将其置于前面,尽管这并不总是可靠的)。或者,可能更好,忘记弹出窗口,只需在当前页面上进行简单的重定向。