使用javascript手动更改表单/文本区域输入,并确保所有事件侦听器都已启动
Manually changing form/textarea input with javascript and making sure all event listeners are fired
在一个项目中,我需要手动填写各种随机网站上的输入字段和文本区域。到目前为止,我一直在做"element.value='new-value'"answers"element.innerHTML='new-vvalue'",但对于一些网站来说,当我这样做时,似乎没有调用事件侦听器。
所以我想我最好手动调用这些,并添加了"element.onchange()"和其他一些(onkeypress、onkeydown、onkeyup),还尝试将元素传递到函数"element.conchange"中。但这两种方法似乎都不适用于许多网站。
例如,请转到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; };
您应该看到所有的输入框都将值更改为"New Test value",但占位符文本仍然存在(属于不同的元素)。当你手动点击页面上的输入框时,会调用一些函数,如果框中有文本,就会删除它。
那么,我如何确保附加到元素的任何事件侦听器总是像手动更改值时一样被调用呢?
希望这能帮助
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");
}
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用javascript手动更改表单/文本区域输入,并确保所有事件侦听器都已启动
- 确保通过绑定到链接的GET请求发生跟踪事件
- 确保一个事件在另一个事件的操作之后执行
- 如何确保在Javascript中多次调用时所有事件都是独立的
- 如何确保在Firefox桌面浏览器中启用触摸事件
- 如何确保绑定到hashChange事件不会冒泡
- 如何确保HTML表单元素在执行javascript事件之前可见地更新
- 我怎样才能确保自己不会错过“开场”呢?WebSockets事件
- 我如何确保特定的单击事件处理程序执行后,所有其他附加的单击处理程序
- 如何确保在快速选择单选按钮时只调用一个事件处理程序
- Javascript:如何确保onClick事件只在先前事件完成后触发
- 如何确保按钮事件在Javascript/JQuery中只触发一次
- 如何确保事件只添加一次
- 如何使用Javascript更新onclick事件(确保它在IE 6+中工作)
- 窗口 8 确保已启用事件日志记录
- 确保电子邮件匹配,使用 onkeyup 事件
- 确保在前一个功能完成后启动下一个功能.在任务完成之前,禁用所有目标元素的已注册事件