在Chrome上发送输入javascript

在Chrome上发送输入javascript,javascript,google-chrome,Javascript,Google Chrome,有人知道为什么我第二次运行代码时它才起作用吗 ThisElement = document.querySelector("#side > div._1Ra05 > div > label > div > div._1awRl.copyable-text.selectable-text"); ThisElement.innerText = 'message'; var focusEvent = new FocusEvent('focus', {

有人知道为什么我第二次运行代码时它才起作用吗

ThisElement = document.querySelector("#side > div._1Ra05 > div > label > div > div._1awRl.copyable-text.selectable-text");

ThisElement.innerText = 'message';

var focusEvent = new FocusEvent('focus', {
  bubbles: false,
  cancelBubble: false,
  cancelable: false,
  composed: true,
  currentTarget: null,
  defaultPrevented: false,
  detail: 0,
  eventPhase: 0,
  isTrusted: true,
});

ThisElement.dispatchEvent(focusEvent);

代码只是在搜索框中发送一条消息


我正在使用DevTools控制台(F12)在chrome上测试它。

问题在于用于设计whatsapp web的React JS,因此要管理它,您可以在setTimeout中再次调用事件

这一问题背后的原因: 在第一个事件触发时,whatsapp web屏幕将释放应用程序屏幕上的所有集中输入,因此需要再次触发事件以刺激浏览器中的人类行为

        function searchContact(contact_name = "") {
        search = document.querySelector('#side > div._1Ra05 > div > label > div > div._1awRl.copyable-text.selectable-text');

        var focusEvent = new FocusEvent('focus', {
            bubbles: true,
            cancelBubble: false,
            cancelable: true,
            composed: true,
            currentTarget: null,
            defaultPrevented: false,
            detail: 0,
            eventPhase: 0,
            isTrusted: true,
        });

        //Enter value in search box events
        var inputEvent = new InputEvent('input', {
            bubbles: true
        });

        search.textContent = contact_name;
        search.dispatchEvent(focusEvent);
        search.dispatchEvent(inputEvent);


        setTimeout(function() {

            search.textContent = contact_name;
            search.dispatchEvent(focusEvent);
            search.dispatchEvent(inputEvent);
        
            el = document.querySelector("#side > div._1Ra05 > div > label > div > div._1awRl.copyable-text.selectable-text");
            var event = new KeyboardEvent('keydown', {
                code: 'Enter',
                key: 'Enter',
                keyCode: 13,
                view: window,
                bubbles: true
            });

            el.dispatchEvent(event);
            
        }, 1000)

    }

    searchContact("name");
    
    function triggerMouseEvent(el, etype) {
        console.log(el)
        var evt = document.createEvent("MouseEvents");
        evt.initMouseEvent(etype, true, true, window,0, 0, 0, 0, 0, false, false, false, false, 0, null);
        el.dispatchEvent(evt);
    }

我认为你是第一个以youtube视频形式展示代码的人。;-)最好是通过将代码包装到iternal脚本编辑器中来创建一个最小的可运行示例。它一开始就奏效了attempt@Master.Deep在哪个页面和哪个浏览器中?我在网络whatsapp上打交道,我上传了一个更好的视频,如果你们能检查一下的话。我在一些随机页面和chrome工具栏上试过