Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

Gray-Ice

个人博客兼个人网站

本篇博文旨在记录做RPA流程时遇到更改输入框的value后前端的后台数据没变的情况时的解决方案。

主要思路是先创建几个事件,然后使用DOMElement.dispatch()方法触发事件。
代码如下:

1
2
3
4
5
6
7
8
9
10
11
var input = document.getElementById("compose_preload").contentDocument.querySelector("#ccContainer > div > div.ItemContainer.writeTable-txt.clearfix > div.addrText > input")
input.value = cc;
var event = document.getElementById("compose_preload").contentDocument.createEvent('HTMLEvents');
event.initEvent("input", true, true);
input.dispatchEvent(event);
var event = document.getElementById("compose_preload").contentDocument.createEvent('HTMLEvents');
event.initEvent("blur", true, true);
input.dispatchEvent(event);
var event = document.getElementById("compose_preload").contentDocument.createEvent('HTMLEvents');
event.initEvent("change", true, true);
input.dispatchEvent(event);

其中”document.getElementById(“compose_preload”).contentDocument”这段代码是在有iframe的情况下才这么写的,即要将Event创建在input对应的文档下。如果目标元素外面没有套iframe标签,可以直接document.createEvent创建事件。

评论



愿火焰指引你