Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何判断弹出窗口是否会被阻止_Javascript_Popup - Fatal编程技术网

Javascript 如何判断弹出窗口是否会被阻止

Javascript 如何判断弹出窗口是否会被阻止,javascript,popup,Javascript,Popup,我理解浏览器在决定窗口.open()是否由单击触发时的工作方式,例如,只有当它来自真实的元素单击事件时才允许 我想自己写同样的逻辑,我该怎么做 假设我有任何JS函数,可以从应用程序的其余部分在任何地方调用,有时在调用堆栈的开始使用click事件处理程序,有时不使用。我如何在方法中知道这一点,而不在应用程序的各个方面显式地传递有关堆栈开始的信息(单击与否) function iNeedToKnowIfStackFrame0WasAClickEventListener() { var wasAC

我理解浏览器在决定
窗口.open()
是否由单击触发时的工作方式,例如,只有当它来自真实的元素单击事件时才允许

我想自己写同样的逻辑,我该怎么做

假设我有任何JS函数,可以从应用程序的其余部分在任何地方调用,有时在调用堆栈的开始使用click事件处理程序,有时不使用。我如何在方法中知道这一点,而不在应用程序的各个方面显式地传递有关堆栈开始的信息(单击与否)

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(); 
}

含糖的我没有意识到这件事。这件事是件大事。当然,如果我更改了
的范围,则不会起作用,但我没有,所以没关系:拇指支持: