【问题标题】:OnClick and New Tab Opened, Redirect (Page Visibility API)OnClick 和新标签打开,重定向(页面可见性 API)
【发布时间】:2018-04-27 22:08:24
【问题描述】:

当有人点击我们网站上的广告(在 IFrame 中)内的链接时,我正在尝试创建重定向(到感谢页面)。我想我可以通过一个简单的 onclick 事件结合检测是否打开新选项卡来做到这一点,因为我无法在 iframe 中的链接上监听 onclick。我找到了 Page Visibility API,这似乎是正确的使用方法(因为当他们点击 iframe 时会激活 .blur,即使他们点击 iframe 中的空白而不是 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;
    }
}

当我点击页面时,我确实得到了“点击”响应,但是当我点击一个链接并打开一个新窗口时,我没有得到重定向,也没有得到重定向。

编辑:我现在看到我的问题是我在 iframe 中根本没有检测到任何点击,即使使用整个文档侦听器也是如此。有什么好办法解决吗?

【问题讨论】:

    标签: javascript redirect visibility


    【解决方案1】:

    好的!我实际上能够通过更多的反复试验时间自己解决这个问题。这是我如何做到的一个例子:

    $(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 中单击,然后我检查窗口是否可见。如果是,那么他们没有打开新选项卡,我将窗口重新设置为焦点,以防他们再次在 iframe 中单击。如果他们确实打开了一个新标签(窗口被隐藏),那么我会将他们发送到我们的感谢页面!我还设置了一个 breif 超时,让浏览器有时间识别窗口是隐藏的(没有这个它不起作用!)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-21
      • 2019-12-28
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      相关资源
      最近更新 更多