我感谢浏览器在确定window.open()
是否由点击触发时的工作方式,例如,只有当它来自真实元素的click事件时,才允许该点击。
我想自己写同样的逻辑,我该怎么做?
假设我有任何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();
}