OnClick 和新标签打开,重定向(页面可见性 API)
OnClick and New Tab Opened, Redirect (Page Visibility API)
当有人点击我们网站上的广告(在 IFrame 中)中的 link 时,我正在尝试创建重定向(到感谢页面)。我想我可以通过一个简单的 onclick 事件结合检测是否打开了新选项卡来做到这一点,因为我无法在 iframe 中监听 links 上的 onclick。我找到了页面可见性 API,这似乎是正确的使用方法(因为当他们点击 iframe 时 .blur 被激活,即使他们点击 iframe 中的白色 space 而不是URL) 但我发现的所有脚本都太复杂了,我无法解码和简化成我可以使用的东西。这是我想做的事的一个例子,我认为应该行得通,但似乎行不通。
document.onclick = function() {
if (document.hidden) {
console.log("New window opened");
window.location.replace("www.example.com/thanks");
} else {
console.log("Click");
// Do nothing
return;
}
}
当我点击页面时,我确实得到了 "click" 响应,但是当我点击 link 并打开一个新的 window 时,我没有被重定向,也没有我会得到重定向吗?
编辑:我现在明白我的问题是我在 iframe 中根本没有检测到任何点击,即使使用整个文档侦听器也是如此。有解决这个问题的好方法吗?
好的!通过更多的反复试验,我实际上能够自己解决这个问题。这是我如何做到的示例:
$(window).blur(function() {
setTimeout(function() {
if (document.hidden) {
window.location.replace("https://example.com/thanks");
} else {
window.self.focus();
}
}, 200);
});
使用 window.blur 而不是 window.onclick 成功了,所以我确信有人在 iframe 中点击了。如果他们在 iframe 中单击,我会检查 window 是否可见。如果是,那么他们就没有打开新选项卡,我将 window 重新设置为焦点,以防他们再次在 iframe 中单击。如果他们确实打开了一个新标签(window 被隐藏),那么我会将他们发送到我们的感谢页面!我还设置了一个 breif 超时,让浏览器有时间识别 window 是隐藏的(没有这个它是行不通的!)。
当有人点击我们网站上的广告(在 IFrame 中)中的 link 时,我正在尝试创建重定向(到感谢页面)。我想我可以通过一个简单的 onclick 事件结合检测是否打开了新选项卡来做到这一点,因为我无法在 iframe 中监听 links 上的 onclick。我找到了页面可见性 API,这似乎是正确的使用方法(因为当他们点击 iframe 时 .blur 被激活,即使他们点击 iframe 中的白色 space 而不是URL) 但我发现的所有脚本都太复杂了,我无法解码和简化成我可以使用的东西。这是我想做的事的一个例子,我认为应该行得通,但似乎行不通。
document.onclick = function() {
if (document.hidden) {
console.log("New window opened");
window.location.replace("www.example.com/thanks");
} else {
console.log("Click");
// Do nothing
return;
}
}
当我点击页面时,我确实得到了 "click" 响应,但是当我点击 link 并打开一个新的 window 时,我没有被重定向,也没有我会得到重定向吗?
编辑:我现在明白我的问题是我在 iframe 中根本没有检测到任何点击,即使使用整个文档侦听器也是如此。有解决这个问题的好方法吗?
好的!通过更多的反复试验,我实际上能够自己解决这个问题。这是我如何做到的示例:
$(window).blur(function() {
setTimeout(function() {
if (document.hidden) {
window.location.replace("https://example.com/thanks");
} else {
window.self.focus();
}
}, 200);
});
使用 window.blur 而不是 window.onclick 成功了,所以我确信有人在 iframe 中点击了。如果他们在 iframe 中单击,我会检查 window 是否可见。如果是,那么他们就没有打开新选项卡,我将 window 重新设置为焦点,以防他们再次在 iframe 中单击。如果他们确实打开了一个新标签(window 被隐藏),那么我会将他们发送到我们的感谢页面!我还设置了一个 breif 超时,让浏览器有时间识别 window 是隐藏的(没有这个它是行不通的!)。