Как избежать 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
,