Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javascript - dispatchEvent return true but not working in Chrome

There are some web,I type the code below not working.For example,I type the code in console at Bing(a search engine)

var event;
event = document.createEvent('Event');
event.initEvent("keypress", true, true);
event.view = window;
event.keyCode = 13;
event.which = 13;
event.charCode = 13;
event.code = "Enter";
event.key = "Enter";
event.bubbles = true;

and i have already type some text in the search bar, the element's id is "sb_form_q",so

var element = document.getElementById("sb_form_q");
element.dispatchEvent(event);

it will return true, but actually nothing happen. I have tried many webs, some working, some not working, and i don't know why.

2018/8/3 update:

I know why some web page dispatch "Enter" event don't work,cause the input is not submit by "Enter" key, but by submit or onsubmit event.

like image 992
Ivan Wu Avatar asked Feb 24 '26 01:02

Ivan Wu


1 Answers

Please find below example as well for Enter keyword.

window.onload = function(){
    var ev = document.createEvent('Events');
    ev.initEvent('keypress', true, true);
    ev.keyCode = 13;
    ev.which = 13;
    ev.charCode = 13;
    ev.key = 'Enter';
    ev.code = 'Enter';
    var eventReturns = document.querySelector('#input-event').dispatchEvent(ev);    
    var Inputvalue = document.getElementById('input-event').value;
    console.log({isdispatch: eventReturns, value: Inputvalue});	
}
<input type="text" id="input-event" value="Hello World" />
like image 143
Mayur Shedage Avatar answered Feb 25 '26 14:02

Mayur Shedage