我有一个函数,只要我从覆盖该函数开始,就从window.open打开新选项卡时都会调用该函数。另外,
我在document.onclick事件上附加了一个功能,我需要 每当window.open函数运行时,函数将暂停或停止。
我知道 event.stopPropagation(); 用于实现此目的,但是在函数中,由于事件参数无法传递,因此无法正常工作。
window.open = function(open) {
return function(url) {
console.log("url", url);
// need to works here event.stopPropagation();
return open.call(window, url);
};
}(window.open);
document.onclick = clickListener;
function clickListener() {
console.log("click");
};
function openLink(){
window.open('https://www.google.com')
}
<button onclick="openLink()">open link</button>
答案 0 :(得分:3)
事件对象将在窗口上可用。您可以尝试以下操作:
window.open = (function(open) {
return function(url) {
window.event.stopPropagation();
console.log("url", url);
// need to works here event.stopPropagation();
return open.call(window, url);
};
})(window.open);
答案 1 :(得分:0)
var staticVar = false;
window.open = function(open) {
return function(url) {
console.log("url", url);
staticVar = true;
// need to works here event.stopPropagation();
return open.call(window, url);
};
}(window.open);
document.onclick = clickListener;
function clickListener() {
if(!staticVar) {
console.log("click")
}
staticVar = false;
};
function openLink() {
window.open('https://www.google.com');
}
<button onclick="openLink()">open link</button>