如何判断弹出窗口是否会被阻止
How to tell if a popup will get blocked
我很欣赏浏览器在决定 window.open()
是否由点击触发时的工作方式,因为它仅在来自真实元素点击事件时才被允许。
我想自己写同样的逻辑,我该怎么做?
假设我有任何 JS 函数,可能会从我的应用程序的其余部分随时随地调用,有时在调用堆栈的开头有一个单击事件处理程序,有时则没有。我如何在我的方法中知道这一点,而不在我的应用程序中一直明确传递有关堆栈开始的信息(点击与否)?
function iNeedToKnowIfStackFrame0WasAClickEventListener() {
var wasAClick = ???;
if(wasAClick)
window.open(...);
else
something.else();
}
您可以使用this.event.type获取事件信息。
您可以像这样将事件传递给函数:
function iNeedToKnowIfStackFrame0WasAClickEventListener(event) {
var wasAClick = event.type == "click";
if(wasAClick)
window.open(...);
else
something.else();
}
或者您可以取消此活动
function iNeedToKnowIfStackFrame0WasAClickEventListener() {
var wasAClick = this.event.type == "click";
if(wasAClick)
window.open(...);
else
something.else();
}
我很欣赏浏览器在决定 window.open()
是否由点击触发时的工作方式,因为它仅在来自真实元素点击事件时才被允许。
我想自己写同样的逻辑,我该怎么做?
假设我有任何 JS 函数,可能会从我的应用程序的其余部分随时随地调用,有时在调用堆栈的开头有一个单击事件处理程序,有时则没有。我如何在我的方法中知道这一点,而不在我的应用程序中一直明确传递有关堆栈开始的信息(点击与否)?
function iNeedToKnowIfStackFrame0WasAClickEventListener() {
var wasAClick = ???;
if(wasAClick)
window.open(...);
else
something.else();
}
您可以使用this.event.type获取事件信息。 您可以像这样将事件传递给函数:
function iNeedToKnowIfStackFrame0WasAClickEventListener(event) {
var wasAClick = event.type == "click";
if(wasAClick)
window.open(...);
else
something.else();
}
或者您可以取消此活动
function iNeedToKnowIfStackFrame0WasAClickEventListener() {
var wasAClick = this.event.type == "click";
if(wasAClick)
window.open(...);
else
something.else();
}