Проблема с открытием новой вкладки в браузере - PullRequest
0 голосов
/ 14 января 2020

Для некоторой интерактивной графики мы используем canvas на нашей странице HTML. Внутри холста у нас есть «линкоподобные» элементы управления для связи пользователей с внешними ресурсами. Из-за холста мы НЕ используем тег <a href="">, но мы открываем новую вкладку браузера с помощью кода JS, например:

this.pixiLayout.App.renderer.view.addEventListener('click', () => {
    if (this.pixiLayout.externalUrl) {
        window.open(this.pixiLayout.externalUrl, '_blank');
    }
});

Проблема: Google Analytics (внешний интерфейс) показывает нам многое больше кликов, чем фактическая аналитика "просмотров страниц" из сторонних ресурсов, до 10-20 раз. Это означает, что пользователи нажимали на ссылку (и она была записана GA), но по какой-то причине ссылка не была открыта или открыта, но не загружена в новую вкладку. Я знаю о блокировщиках рекламы / всплывающих окон. Это может быть случай для некоторого процента пользователей. Но это не относится к 90% пользователей, как у нас.

И мы не могли бы воспроизвести это поведение на любом нашем устройстве.

Вопрос: Может ли это быть вызвано нормальным браузером политика или ограничение, которое может вызвать блокировку новой вкладки, как в нашем случае? Может ли это быть как «новая функция» современных браузеров, о которых я еще не знаю?

1 Ответ

1 голос
/ 15 января 2020

Хорошо, проблема была в нашем собственном коде. Событие запуска GA (мы используем пользовательские события) было реализовано в другом месте кода, чем фактическое действие - window.open(). Они должны были вызываться при одном и том же действии пользователя - клике пользователя. Но это был не тот случай, специально для мобильных устройств. Когда пользователь нажимает на этот интерактивный элемент управления, похожий на ссылку, и перемещает палец вверх или вниз (для прокрутки), он запускает пользовательское событие, отвечающее за отслеживание «щелчка». Но фактическое событие «click» в этом случае не запускается.

Вывод: никогда не выполняйте фактическое действие в одном месте и «собирайте аналитику этого действия» в другом месте кода.

...