我很欣赏浏览器在决定 a 是否window.open()由点击触发时的工作方式,因为只有当它来自真实元素点击事件时才允许。我想自己编写相同的逻辑,我该怎么做?假设我有任何 JS 函数,可以从我的应用程序的其余部分在任何地方和任何地方调用,有时在调用堆栈的开头有一个单击事件处理程序,有时没有。我怎么能在我的方法中知道这一点,而没有在我的应用程序周围显式传递有关堆栈开始的信息(单击与否)?function iNeedToKnowIfStackFrame0WasAClickEventListener() { var wasAClick = ???; if(wasAClick) window.open(...); else something.else();}
1 回答
![?](http://img1.sycdn.imooc.com/53339fdf00019de902200220-100-100.jpg)
暮色呼如
TA贡献1853条经验 获得超9个赞
您可以使用 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();
}
添加回答
举报
0/150
提交
取消