处理我需要在各种随机网站上手动填写输入字段和textareas的项目。到目前为止,我一直在做“element.value ='新值'”和“element.innerHTML ='新值'”,但是对于某些网站来说,似乎有些事件监听器在我这样做时没有被调用。
所以我认为我最好手动调用它们,并添加“element.onchange()”和其他一些(onkeypress,onkeydown,onkeyup),并尝试将元素传入函数“element.onchange (元件)”。但这些似乎都不适用于许多网站。
例如,转到http://www.facebook.com(已注销)并运行:
javascript:var elements = document.getElementsByClassName('inputtext'); for(var i = 0; i < elements.length; i++) { var element = elements[i]; element.value = 'New Test Value'; element.innerHTML = 'New Test Value'; element.onkeypress; };
您应该看到所有输入框都将值更改为“新测试值”,但占位符文本仍然存在(属于不同的元素)。当您手动单击页面上的输入框时,会调用一些函数,如果框中有文本,则会删除此函数。
那么我如何确保连接到元素的任何事件监听器总是被调用,就像我们手动更改值时一样?
答案 0 :(得分:2)
希望这有帮助
var isCreatEvent = "createEvent" in document,
allEles = document.querySelectorAll('input'); // collect required elements.
for(var i = 0; i < allEles.length; i++){
var element = allEles[i];
element.onchange();
if (isCreatEvent) {
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
element.dispatchEvent(evt);
}
else
element.fireEvent("onchange");
}