Как отключить контекстное меню в браузере Tencent / X5 / WeChat на Android - PullRequest
0 голосов
/ 25 июня 2018

У меня есть веб-приложение, в котором есть некоторые взаимодействия, в которых пользователю требуется длительное нажатие / удержание на экране, чтобы прогрессировать, все это прекрасно работает, однако на WeChat в Китае и подобных браузерах / веб-обозрениях, таких как Tencent (X5), при удержании экрана появляется контекстное меню.

Я пробовал следующий код (и все варианты внутри события):

// Long press, then the following code executes
document.addEventListener('contextmenu', (e) => {
    alert('Right click');
    e.preventDefault();
    e.stopPropagation();
    return false;    
});
// As soon as the alert is dismissed, the context menu still appears

Предупреждение появляется сразу перед контекстным меню приложения, но я все еще не могу предотвратить его.

Любая помощь здесь будет принята с благодарностью. Я знаю, что WeChat для Android в Китае имеет собственный мост Javascript, и другие причуды можно отключить с помощью пользовательских атрибутов и т. Д., Я просто не смог исправить это.

Это легко проверить с помощью https://play.google.com/store/apps/details?id=com.tencent.mtt (работает за пределами Китая).

Спасибо

1 Ответ

0 голосов
/ 02 июля 2018

Это помогло мне:

element.addEventListener('touchstart', (e) => {
    e.stopPropagation();
    e.preventDefault();

    // Trigger desired event here
});

Отмена события touchstart, кажется, заставляет браузер думать, что указатель больше не нажимается, вместо того, чтобы пытаться отменить какие-либо действия, основанные на событии продолжительного нажатия. Вы можете заменить элемент на тело, чтобы предотвратить его появление во всем, но это, вероятно, не рекомендуется (UX + другие побочные эффекты).

...