最近学习 js 来填写表单。遇到一个奇怪的表单,我如果是人工输入邮箱账号,或者粘贴,都是可以通过验证。如果是通过代码填写邮箱,都显示不通过。请问这个编码是如何写验证的?如果通过 js 填表,如何绕过验证?求大神,指导。
1
finalspeed 2016-10-07 22:39:23 +08:00 via Android
可能 你看到的只是显示,还有另一个标签正真做验证
|
2
ZhaoMiing 2016-10-07 22:41:24 +08:00
目测数据层没有同步,手动触发一下 change 事件?
|
3
ykrl089 2016-10-07 22:41:32 +08:00
键盘输入比对,这是我想到最简单的办法
|
4
helloccav 2016-10-07 23:01:27 +08:00
目测是 js 绑定事件的问题,通过代码输入的话无法触发相应的验证事件。
|
5
Kokororin 2016-10-07 23:09:37 +08:00
if ("createEvent" in document) {
var evt = document.createEvent("HTMLEvents"); evt.initEvent("change", false, true); element.dispatchEvent(evt); } else element.fireEvent("onchange"); |
12
ZhaoMiing 2016-10-08 00:31:36 +08:00 1
@hanmeimei 看了一下页面用了 react ,更改 input 的 value 时数据没有同步到对应的组件 state 里去。由于没有 jQuery 只能这样触发 change 事件了。
var event = new Event('input', { bubbles: true }); document.querySelector('#newEmail').dispatchEvent(event); |
13
jprovim 2016-10-08 05:42:00 +08:00
静观大牛的各种解法.
|
14
mathcoder23 2016-10-08 08:34:19 +08:00
直接新建一个提交方便吗?
|
15
indooorsman 2016-10-08 09:34:25 +08:00 via Android
keyup keydown input 这些事件挨个触发一遍😄
|
16
Kokororin 2016-10-08 10:06:41 +08:00
测试可行,能够收到邮件,但是后端还是有做邮件地址的验证
var getCookie = function(name) { var value = "; " + document.cookie; var parts = value.split("; " + name + "="); if (parts.length == 2) return parts.pop().split(";").shift(); } fetch('https://app.meiqia.com/api/agent/agents/' + getCookie('_agent_id') + '?v=' + new Date().getTime(), { method: 'put', headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: getCookie('_authenticated') }, body: JSON.stringify({ email: '[email protected]' }) }) .then(function(response) { return response.json() }) .then(function(json) { console.log(json) }) |