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

我很欣赏浏览器在决定 a 是否window.open()由点击触发时的工作方式,因为只有当它来自真实元素点击事件时才允许。


我想自己编写相同的逻辑,我该怎么做?


假设我有任何 JS 函数,可以从我的应用程序的其余部分在任何地方和任何地方调用,有时在调用堆栈的开头有一个单击事件处理程序,有时没有。我怎么能在我的方法中知道这一点,而没有在我的应用程序周围显式传递有关堆栈开始的信息(单击与否)?


function iNeedToKnowIfStackFrame0WasAClickEventListener() {

  var wasAClick = ???;

  if(wasAClick)

    window.open(...);

  else

    something.else();

}


摇曳的蔷薇
浏览 162回答 1
1回答

暮色呼如

您可以使用 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(); }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript