setTimeout 到 window.open 并在同一个 window 上关闭?

setTimeout to window.open and close, on the same window?

我在一段时间后打开 windows 有点困难,然后在一段时间后自动关闭它们。我不确定为什么,但似乎当我尝试在 window.open 和 window.close 上使用 setTimeout 时,它们会以某种方式干扰。这是我的代码 atm:

function topLeft() {

var myWindow = "image.png", "ONE", "width=300,height=310,top=100,left=100,menubar=no,toolbar=no,titlebar=no,statusbar=no";

setTimeout(function() {
myWindow.window.open() }, 5000);

setTimeout(function() { 
myWindow.close() }, 10000);


function start() {
openClose();
}


window.onload = start;

感谢观看

你的代码不对。

myWindow是一个字符串变量。

您正在尝试呼叫 myWindow.window.open()。这会产生脚本错误,因为 myWindow(字符串变量)没有 window 属性.

也许你的意思是这样的:

var myWindowURL = "image.png", myWindowName = "ONE";
var myWindowProperties  = "width=300,height=310,top=100,left=100,menubar=no,toolbar=no,titlebar=no,statusbar=no";
var openWindow;

setTimeout(function() {
    openWindow = window.open(myWindowURL, myWindowName, myWindowProperties); 
}, 5000);

setTimeout(function() { 
    openWindow.close() 
}, 10000);

大多数流行浏览器中的弹出窗口拦截器只允许打开新的 window,前提是它是通过代码 运行 由直接用户操作(例如点击)打开的。

因为 setTimeout() 在未来某个时间发生,不被认为是用户操作的直接结果,因此尝试从 setTimeout() 打开 windows 可能会被弹出窗口阻止拦截器。

当然,您可以在自己的浏览器中禁用弹出窗口阻止程序,但这只是您可以在自己的浏览器中执行的操作。您不能通过 Javascript 禁用弹出窗口阻止(因为那样会破坏目的)。