Как избежать ContextMenu после долгого нажатия мыши в Firefox OS Simulator
Я установил чат-приложение в Firefox OS Simulator.
Это приложение добавляет contextmenu слушатели событий, в которых это позволяет мне удалять отдельные сообщения.
Однако этот прослушиватель событий не позволяет мне выбирать текст в сообщениях.
Мне все равно, как эта проблема решается в сенсорных устройствах. Так как я использую ПК, я могу отправить contextmenu слушатель событий, нажав правой кнопкой мыши.
Поэтому, когда я держу левую кнопку мыши, я хочу получить красный от этого contextmenu событие, но все же сможет выбрать текст.
2 ответа
Это поведение не является ошибкой, оно предназначено как функция:
Имитация сенсорных событий на рабочем столе
Если вы все еще хотите отключить его, выполните следующие действия:
- Откройте папку профиля Firefox:
- Идти к
about:support - Найдите раздел "Основы применения"
- Найдите запись "Папка профиля" в таблице.
- Нажмите кнопку "Показать папку"
- Идти к
- Перейти к
extensionsвложенная - Найдите папку вашего симулятора, например
fxos_2_2_simulator@mozilla.org - Идти к
b2g/modules/devtoolsподпапок - Открой
touch-events.jsфайл с соответствующим текстовым редактором Найти
sendContextMenuфункция:sendContextMenu: function teh_sendContextMenu(target, x, y, delay) { let doc = target.ownerDocument; let evt = doc.createEvent('MouseEvent'); evt.initMouseEvent('contextmenu', true, true, doc.defaultView, 0, x, y, x, y, false, false, false, false, 0, null); let content = this.getContent(target); let timeout = content.setTimeout((function contextMenu() { target.dispatchEvent(evt); this.cancelClick = true; }).bind(this), delay); return timeout; },Прокомментируйте эту строку, чтобы избежать отправки события:
// target.dispatchEvent(evt);Перезапустите симулятор
Обратите внимание, что важно только предотвратить отправку события, а не не вызывать sendContextMenu, В противном случае, клик не будет отменен (this.cancelClick = true), поэтому выбор текста не будет работать должным образом.
Это решение для каждого приложения:
Найдите путь к приложению. Это будет что-то вроде
[Firefox profile]\extensions\[Firefox OS Simulator]\profile\webapps\[ID]\application.zipСделайте резервную копию и распакуйте его
Найдите файл JS, который добавляет
contextmenuслушатель событий.Возможно, это будет что-то вроде
someThing.addEventListener('contextmenu', function handler(event) { // ... });Отфильтруйте левую кнопку мыши:
someThing.addEventListener('contextmenu', function handler(event) { if(evt.button === 0) return; // ... });Убедитесь, что симулятор закрыт
- Вставьте измененный файл в нужное место
application.zip,