我只是在这里引用文档,任何需要参考的人都可以点击W3C和MDN。
function openWin() {
myWindow = window.open("", "myWindow", "width=200, height=100"); // Opens a new window
}
function closeWin() {
myWindow.close(); // Closes the new window
}
分解它,open
和close
函数使用的参数非常有用,例如URL
, 当希望打开或关闭当前窗口时,或者在您的情况下是打开的窗口。
一个实际的例子是这个堆栈溢出问题。ñ
我希望它有帮助!
编辑
要回答 OP 对问题的编辑:如果是在打开的窗口上触发事件,您可以在新窗口上有一个事件处理程序,它将window.close()
像这样触发:
$('#anElementId').click(function() { window.opener.$('body').trigger('theCloseEvent', anyPassedData); })
但是,如果您确实可以控制新选项卡,因为它指向一个您可以控制其代码库的 URL,那么只需在该处触发一个事件,您可以在窗口加载后触发该事件,或者一旦你点击一个按钮......就像这样:
HTML
<button id="close-window">Close me</button>
Javascript/jQuery:
$(document).ready(function(){
$("#close-window").click(function(){
alert("ok");
window.close();
});
});
编辑#2
为了进一步扩展 OP 的编辑,我想在此处包含一个在尝试触发打开的窗口自行关闭时很容易遇到的问题。
引自如何关闭浏览器窗口而不收到“您要关闭此窗口”提示?:
不允许脚本关闭用户打开的窗口。这被认为是一种安全风险。虽然它没有任何标准,但所有浏览器供应商都遵循这一点(Mozilla 文档)。如果在某些浏览器中发生这种情况,这是一个安全漏洞(理想情况下)会很快得到修补。
这个问题的答案中的任何黑客都不再有效,如果有人想出另一个肮脏的黑客,最终它也会停止工作。
我建议您不要为此浪费精力,而是采用浏览器为您提供的非常有用的方法——在您看似崩溃他们的页面之前询问用户。
换句话说,除非您的网页脚本可以控制打开的窗口,否则您应该/不能关闭所述窗口。那是因为运行的脚本window.close
不受打开的窗口的控制。
编辑#3
我知道这么多编辑!但我在我的日常生活之间回答这个问题,所以请耐心等待。要回答 porthole.js 的问题,应该更有可能用它做一些事情,但是您需要意识到您正在使用 iframe。
使用网站与使用iframe存在显着差异,其中 iframe 是小部件,网站(包括迷你网站)被赋予 URL。在安全性和沙盒方面也有很多考虑因素,可以在此处的 portholejs 演示中看到。这种差异也不允许您以最初想要的方式使用不同的网站。
我的建议是评估您在实施方面的选择:网站到网站与网站到小部件。
祝你好运!