想通过 JavaScript,获取论坛、博客等不同网站光标所在当前 form,调用 submit() ,执行 input 或者 textarea 输入框为 type="submit"的提交,不再点按钮和按 enter
现在没办法识别不同网站光标所在的 input 或 textarea 的 form 元素
尝试了下面的方法,就百度的有效果,论坛按 ctrl+enter 不能提交的 textarea 输入框没效果,再有些论坛不能确定回复文本框的序号,会执行搜索输入框,即第一个 form
不同网站 form 的 name 不一样,也不能通过 form[name
]调用
document.forms[0].submit()
尝试了用下面的方法,没有效果
this.submit()
1
autoxbc 2020-06-10 13:16:06 +08:00
document.activeElement
https://www.runoob.com/jsref/prop-document-activeelement.html |
2
soooulp OP @autoxbc 谢谢大佬回复,document.activeElement 可以获取当前 DOM 的元素,可是无法调用 submit 提交呀,是不是只有 form 可以调用
|
3
autoxbc 2020-06-10 14:33:54 +08:00
HTMLFormElement.prototype.submit
submit 是 form 原型对象上的方法,只有 form 实例才可以 submit,因为 submit 需要的地址 action 在 form 上,单独的 input 去 submit 本身也不合逻辑 HTMLInputElement.prototype.form input 原型对象上有 getter 属性 form,指向 input 所属 form,所以按照题目的意思,可以 input.form.submit() |
4
autoxbc 2020-06-10 14:36:36 +08:00
HTMLTextAreaElement.prototype.form
textarea 也有这个属性 |
5
soooulp OP 解决了,csdn 大佬给有个遍历节点元素的方法
``` function getParentFormByChild(ele){ while(ele.parentNode.tagName.toLowerCase() !== 'body' && ele.parentNode.tagName.toLowerCase() !== 'form'){ ele = ele.parentNode } if(ele.parentNode.tagName.toLowerCase() === 'body' ) return null return ele.parentNode } function 油猴子点击图标事件(){ let ele = "油猴子获取当前光标所在 input 的 dom 元素" let fromEle = getParentFormByChild(ele) if(fromEle) fromEle.submit() } ``` |