J'essaie d'envoyer des messages texte sur WhatsApp avec javascript?

J'essaie d'envoyer des messages texte sur la version web whatsapp sur chrome. ( Www.web.whatsapp.com )

C'est le code:

document.getElementsByClassName("input")[1].innerHTML="This message was written via JS script! "; var input = document.getElementsByClassName("icon btn-icon icon-send"); input[0].click(); 

Mais le problème est, d'abord, quand aucun texte n'est présent, la boîte de saisie ressemble à ceci: Entrez la description de l'image ici

Et seulement lorsque j'écris physiquement un texte, il change à ceci:

Entrez la description de l'image ici

Et maintenant, mon script fonctionne car il nécessite le Send text button .

J'ai essayé le code Jquery pour simuler des pressions de touches à $ ('. Input) par la fonction suivante:

 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]; } 

Cela n'a pas marché.

Comment puis-je obtenir le bouton Send text par script?

Voici l'enregistrement d'écran :

Essayez cet extrait, tout en ouvrant une conversation:

 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() 

Toutes les options ne fonctionnaient pas pour moi. C'est ce que j'ai fait.

 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(); } 

Comme Khalid Lafi l'a dit, c'est le bon script. Son code ne renverra une erreur lors de l'exécution

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

C'est parce que vous devez utiliser "input.div" au lieu de "# composition-entrée div". Le script suivant fonctionne pour moi.

 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(); 

J'espère que cela t'aides.

Voici le script mis à jour. J'espère que cela t'aides.

 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); 
 $(".input").on("keypress",function(e){ if(e.which == 32 || e.which == 13){ alert('msg sent')}; }); 

Vous devez comparer == où, comme vous attribuez =

La mise à feu d'un événement avec un KeyPress dans une entrée ne peuplera pas la zone de texte car la population fait partie de l'événement natif.

Si votre intention est de remplir un champ de texte, vous devrez simplement définir le val. Dans jQuery, cela peut se faire avec .val() , par exemple:

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

La boîte de saisie WhatsApp a probablement un auditeur d'événements en attente d'un événement de clavecin, et si le champ est peuplé, le passer au bouton d'envoi. Si tel est le cas, vous pouvez déclencher manuellement un événement qui déclenchera le code (non natif) de WhatsApp.

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

C'est le script de travail:

  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();