Estoy tratando de enviar mensajes de texto en whatsapp versión web en chrome.
(www.web.whatsapp.com)

Este es el código:

JS:

document.getElementsByClassName("input")[1].innerHTML="This message was written via JS script! ";

var input = document.getElementsByClassName("icon btn-icon icon-send");
input[0].click();

Pero el problema es que , al principio, cuando no está presente el texto de la caja de entrada se parece a esto:
Estoy tratando de enviar mensajes de texto en WhatsApp con javascript?

Y sólo cuando me físicamente escribir algún texto cambiará a:

Estoy tratando de enviar mensajes de texto en WhatsApp con javascript?

Y sólo ahora mi script funciona, ya que requiere el Send text button.

Traté de código Jquery para simular pulsaciones de teclas en $(‘.de entrada)por la siguiente función:

JS:

function pressKey() {
  var e = jQuery.Event("keypress");
  e.which = 32; //# space
  $(".input").trigger(e)[1];
  e.which = 91;
  $(".input").trigger(e)[1];
  e.which = 32; //# space
  $(".input").trigger(e)[1];
  e.which = 32; //# space
  $(".input").trigger(e)[1];

}

No funcionó.

¿Cómo puedo obtener el Send text botón de secuencia de comandos?

Aquí está la grabación de la pantalla :

InformationsquelleAutor yask | 2015-01-23

7 Comentarios

  1. 8

    Tratar este fragmento, mientras que la apertura de una conversación:

    function dispatch(target, eventType, char) {
       var evt = document.createEvent("TextEvent");    
       evt.initTextEvent (eventType, true, true, window, char, 0, "en-US");
       target.focus();
       target.dispatchEvent(evt);
    }
    
    
    dispatch(document.querySelector("#compose-input div"), "textInput", "hello!");
    
    function triggerClick() {
      var event = new MouseEvent('click', {
        'view': window,
        'bubbles': true,
        'cancelable': true
      });
      document.querySelector(".icon.btn-icon.icon-send").dispatchEvent(event)
    }
    triggerClick()
    • Lanza Uncaught TypeError: No se puede leer la propiedad ‘focus’ null(…) también creo que ya cambia es la causa de #componer-entrada div que ya no existe
    • ¿qué es TextEvent aquí ?
    • esto ya no funciona. ¿hay alguna otra solución?
  2. 13

    Todas las opciones no funciona para mí. Eso es lo que hice.

    function sendMessage(message) {
        var evt = new Event('input', {
            bubbles: true
        });
    
        var input = document.querySelector("div.input");
        input.innerHTML = message;
        input.dispatchEvent(evt);
    
        document.querySelector(".icon-send").click();
    }
  3. 5

    Como Khalid Lafi dijo, este es el script correcto. Su código devolverá un mensaje de error al ejecutar

    dispatch(document.querySelector("#compose-input div"), "textInput", "hello!");

    Esto es porque usted debe utilizar «de entrada.div» en lugar de «#componer-entrada div». La siguiente secuencia de comandos está trabajando para mí.

    function dispatch(target, eventType, char) {
        var evt = document.createEvent("TextEvent");    
        evt.initTextEvent (eventType, true, true, window, char, 0, "en-US");
        target.focus();
        target.dispatchEvent(evt);
    }
    
    
    dispatch(document.querySelector("div.input"), "textInput", "hello!");
    
    function triggerClick() {
    var event = new MouseEvent('click', {
      'view': window,
      'bubbles': true,
      'cancelable': true
     });
    document.querySelector(".icon.btn-icon.icon-send").dispatchEvent(event);
    }
    
    triggerClick();

    Espero que esto ayude.

    • ¿todavía funciona? Estoy recibiendo un error: Uncaught TypeError: Cannot read property 'dispatchEvent' of null(…) cuando me llame para triggerClick
  4. 3

    La siguiente es la secuencia de comandos actualizada. Espero que esto ayude.

    var input = document.querySelector('.block-compose .input');
    setTimeout(function(){
        for(var j = 0; j < 1; j++) {
            input.innerHTML = "Hello";
            input.dispatchEvent(new Event('input', {bubbles: true}));
            var button = document.querySelector('.block-compose button.icon-send');
            button.click();
        }
    },1000);
    • Sigue trabajando, sólo cambiar el selector a ‘#main [contenteditable~=true]’ en la entrada y documento.querySelector(‘botón>span[data-icon=»enviar»]’).parentElement en el botón
  5. 0
    $(".input").on("keypress",function(e){ 
     if(e.which == 32 ||  e.which == 13){ alert('msg sent')};
    
    });

    tiene que comparar == como usted está asignando =

    • verificar haciendo clic en la tecla enter aparecerá un aviso y no debe ser class=»entrada» para el cuadro de entrada
    • No responde a mi pregunta. Quiero simular la pulsación de tecla afectar a obtener la send text botón de no hacer una función js para detectar las pulsaciones de teclado.
  6. 0

    El disparo de un evento con una Pulsación de tecla en una entrada no realmente rellenar el área de texto, porque la población es parte de la nativa del evento.

    Si su intención es llenar un campo de texto, usted simplemente necesita para establecer el val. En jQuery esto se puede hacer con .val(), por ejemplo:

    function pressKey() {
      $(".input").val('test');
    }

    El WhatsApp cuadro de entrada tiene, probablemente, un detector de eventos a la espera de un evento keyup, y si el campo se rellena, se cambia al botón de enviar. Si este es el caso, entonces usted puede activar manualmente un evento que activará WhatsApp (no nativo) código.

    function pressKey() {
      $(".input").val('test').trigger($.Event('keyup'));
    }
    • Lo he probado en web.whatsapp.com , no funciona.
  7. 0

    Este es el guión de trabajo:

      function dispatch(target, eventType, char) {
                var evt = document.createEvent("TextEvent");
                evt.initTextEvent (eventType, true, true, window, char, 0, "en-US");
                target.focus();
                target.dispatchEvent(evt);
            }
    
    
            dispatch(document.querySelector(".input-container > .input-emoji .input"), "textInput", "hello!");
    
            function triggerClick() {
                var event = new MouseEvent('click', {
                    'view': window,
                    'bubbles': true,
                    'cancelable': true
                });
                document.querySelector(".icon.btn-icon.icon-send").dispatchEvent(event)
            }
            triggerClick();
    • TypeError: evt.initTextEvent no es una función
    • initTextEvent –> no funciona con firefox. Página de Mozilla estados no se implementa.
    • Obtener este error Uncaught TypeError: Cannot read property 'dispatchEvent' of null(…)

Dejar respuesta

Please enter your comment!
Please enter your name here