Como evitar o ContextMenu após um longo pressionamento do mouse no Firefox OS Simulator

0

Eu instalei um aplicativo de bate-papo no Firefox OS Simulator.

Esse aplicativo adiciona contextmenu ouvintes de eventos, nos quais ele permite remover mensagens individuais.

No entanto, esse ouvinte de evento me impede de selecionar texto nas mensagens.

Eu não me importo como esse problema é resolvido em dispositivos sensíveis ao toque. Como estou usando um PC, posso enviar um ouvinte de evento contextmenu clicando com o botão direito do mouse.

Portanto, quando mantenho o botão esquerdo do mouse, quero ficar vermelho desse evento contextmenu , mas ainda assim poder selecionar o texto.

    
por Oriol 13.09.2015 / 02:09

2 respostas

0

Esse comportamento não é um bug, ele é um recurso:

Simulate touch events on desktop

Se você ainda quiser desativá-lo, siga estas etapas:

  1. Abra a pasta de perfil do Firefox:
    1. Ir para about:support
    2. Encontre a seção "Princípios básicos do aplicativo"
    3. Encontre a entrada "Pasta de perfil" na tabela
    4. Clique no botão "Mostrar pasta"
  2. Ir para a subpasta extensions
  3. Encontre a pasta do seu simulador, por exemplo %código%
  4. Ir para [email protected] subpastas
  5. Abra o arquivo b2g/modules/devtools com um editor de texto adequado
  6. Encontre a função touch-events.js :

    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;
    },
    
  7. Comente esta linha para evitar despachar o evento:

    // target.dispatchEvent(evt);
    
  8. Reinicie o simulador

Note que é importante apenas evitar o envio do evento em vez de não chamar sendContextMenu . Caso contrário, o clique não seria cancelado ( sendContextMenu ), portanto, a seleção de texto não funcionaria corretamente.

    
por 13.09.2015 / 02:09
0

Esta é uma solução por aplicativo:

  1. Encontre o caminho para o aplicativo. Será algo como

    [Firefox profile]\extensions\[Firefox OS Simulator]\profile\webapps\[ID]\application.zip
    
  2. Faça o backup e extraia-o

  3. Encontre o arquivo JS que adiciona o ouvinte de evento contextmenu .

    Provavelmente, será algo como

    someThing.addEventListener('contextmenu', function handler(event) {
      // ...
    });
    
  4. Filtre o botão esquerdo do mouse:

    someThing.addEventListener('contextmenu', function handler(event) {
      if(evt.button === 0) return;
      // ...
    });
    
  5. Verifique se o simulador está fechado

  6. Insira o arquivo modificado no lugar certo de application.zip .
por 13.09.2015 / 02:26