OnClick и новая вкладка открыты, перенаправление (API видимости страницы) - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь создать редирект (на страницу благодарности), когда кто-то нажимает на ссылку в объявлении (в IFrame) на нашем сайте. Я думаю, что мог бы сделать это с простым событием onclick в сочетании с определением, открыта ли новая вкладка, так как я не могу прослушать щелчок по ссылкам внутри iframe. Я нашел API видимости страницы, который кажется правильным для использования (поскольку .blur активируется, когда они нажимают на iframe, даже если они щелкают на пустом месте в 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;
    }
}

Когда я нажимаю на страницу, я получаю ответ "click", но когда я нажимаю на ссылку и открываю новое окно, я не перенаправляюсь и не получаю перенаправление.

РЕДАКТИРОВАТЬ: теперь я вижу, что моя проблема в том, что я не обнаруживаю НИКАКИХ щелчков внутри iframe, даже с целым слушателем документа. Есть ли хороший способ исправить это?

1 Ответ

0 голосов
/ 28 апреля 2018

Хорошо! На самом деле я смог разобраться в этом вопросе самостоятельно, потратив немного времени на пробу и ошибку. Вот пример того, как я это сделал:

$(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. Если они щелкали внутри фрейма, я проверял, было ли окно больше видно. Если это так, то они не открыли новую вкладку, и я вернул окно в фокус, если они снова щелкают внутри фрейма. Если они открыли новую вкладку (окно скрыто), я отправляю их на нашу страницу благодарности! Я также установил краткий тайм-аут, чтобы браузер смог распознать, что окно скрыто (без этого оно не работало!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...