打开窗口并立即关闭

时间:2016-10-10 07:30:28

标签: javascript google-chrome firefox window

JS有一种方法可以打开窗口并立即关闭 无法在新标签中打开,我只想要打开一个窗口(如在后台,如果可能的话)做一些检查并立即关闭它,没有新标签打开的影响,是否可能?

这样的东西,但没有窗户打开的效果......

 var popup = window.open("http://www.google.com");

popup.close();

更新 这是我找到的解决方案,但它有时会轻弹,我想避免它......

function goNewWin() {

    var TheNewWin = window.open("http://www.yahoo.com", 'TheNewpop', 'toolbar=1,location=1,directories=1,status=1,menubar=1,scrollbars=1,resizable=1');

    TheNewWin.blur();
    TheNewWin.close();

}

10 个答案:

答案 0 :(得分:1)

您的问题的解决方案是使用window.postMessage()功能。 child用于通知parent窗口已加载,并且它也适用于cross domain

儿童

$(window).load(function(){
    this.opener.postMessage({'loaded': true}, "*");
    this.close();
});

<强>父

$(window).on('message', function(event) {     
    alert(event.originalEvent.data.loaded);
}); 

还有一个方法,如stackoverflow的thread中所述。

完全归因于此线程的堆栈溢出的作者

答案 1 :(得分:1)

即使您在close之后立即致电window.open,即使您尝试在屏幕外找到弹出窗口或使其大小为空,您也会看到它在屏幕上快速闪烁:

var popup = window.open("", "Popup", "left=10000,top=10000,width=0,height=0");
popup.close();

出于安全原因,window.open无法将弹出窗口置于屏幕之外,并且不能使其小于某个最小尺寸。以下是MDN documentationwindow.open主题的摘录:

  

功能列表中请求的位置和请求的维度值   不会受到尊重,如果有任何要求,将予以纠正   value不允许在整个浏览器窗口中呈现   用户操作系统应用的工作区域。没有部分   新窗口的位置最初可以在屏幕外定位。这是   在所有基于Mozilla的浏览器版本中都是默认的。

类似的限制适用于Internet Explorer,如this document所示。 Internet Explorer的最小尺寸为250×150,Firefox的最小“内部”尺寸为100×100。

如果您绝对想要避开闪烁的弹出窗口,可以使用以下方法之一:

  • 不是通过调用window.open进行测试,而是在页面上显示警告,通知用户不应激活弹出窗口拦截器选项(如UncaAlby所建议的here
  • 让应用程序运行并警告用户,事实上,如果无法显示真正的弹出窗口
  • 使用window.open的替代方法,例如来自jQuery UI的dialog widget或来自Bootstrap的modals

答案 2 :(得分:1)

<html>
<head>
<script type= "text/javascript">




function closeWin() {
    window.close();
    return true;
}
</script>

</head>
<body onload="return closeWin();">

</body>
</html>

答案 3 :(得分:0)

  

//要打开弹出窗口的页面代码,它将在右下角打开小弹出窗口。

var popup = window.open("popup.html", "Popup", "height=1, width=1, status=no, toolbar=no, menubar=no, location=no, top = 100000, left=100000 ");
  

//在你的popup.html中添加以下代码

this.close();

答案 4 :(得分:0)

如何在当前窗口上动态创建iframe。 然后你可以在它上面打开任何页面,之后你可以随时销毁iframe元素。

答案 5 :(得分:0)

<button onclick="myFunction()">Try it</button>

<script>
function myFunction() {
    window.open("http://www.google.com");
}
</script>

这里你得到的答案是,它会在按钮上点击

打开页面新标签

答案 6 :(得分:0)

如果您不希望用户知道您在某个网址上执行了某些操作,请使用AJAX调用和处理

或者你这样做

<script type="text/javascript">
var popup = window.open("http://www.exampleurl.com/popup.html", "Popup", "height=10, width=10, status=no, toolbar=no, menubar=no, location=no, top = 1, left=1");
</script>

在popup.html中,您可以编写代码来关闭它。

答案 7 :(得分:0)

此隐藏模式下的打开窗口。对用户不可见。 希望这可以帮助你

window.open(path.html,'_blank','toolbar=no,status=no,menubar=no,scrollbars
=no,resizable=no,left=10000,     top=10000, width=10,    height=10,visible=none', '');

答案 8 :(得分:0)

I don't think you can avoid the flicker of opening a new window completely. You could check for a pop-up and save the state in a cookie. Then wrap your pop-up checker in a simple if statement with the value of that cookie as the logic. This would avoid the pop-up checker going every single page load.

ABA

答案 9 :(得分:0)

我检查过的代码及其正常工作

var popup =  window.open("test.php","event","width=900,height=900,scrollbars=no,resizable=yes");
popup.blur();
window.focus();

这将打开页面,但您看不到页面打开。