我正在尝试为DeviantArt.com编写一个油脂猴子脚本,如果我访问指定的个人资料,它将发送评论。我已经编写了可以输入要发送的文本的脚本,但是发送时遇到了问题。
单击“提交评论”按钮应该起作用的代码是:$(".smbutton.smbutton-green.smbutton-big.comment-submit").first().click()
选择器很好,它可以完美地选择“提交评论”按钮元素,但是脚本不会单击它。
最奇怪的是-如果我将此行粘贴到浏览器的控制台中,则效果很好!
那些人也不起作用:$(".smbutton.smbutton-green.smbutton-big.comment-submit")[0].click()
$(".smbutton.smbutton-green.smbutton-big.comment-submit")[0].trigger('click')
包含此行的完整脚本:
`
// ==UserScript==
// @name DaHubAutoClicker
// @version 1.0
// @description
// @require http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js
// @match http://dahub.deviantart.com/
// @match http://*.deviantart.com/*
// ==/UserScript==
console.log("### DaHubAutoClicker started ###")
function sendd(){
console.log("sending")
$(".smbutton.smbutton-green.smbutton-big.comment-submit").first().click()
}
/* ############################################################ DaHub */
if(document.domain == "dahub.deviantart.com"){
console.log("### DaHub")
$("#commentbody").click(); /*IMPORTANT: the submit button appears after clicking that element*/
setTimeout(function(){
$('.writer.no-lub.put-art-here.ui-droppable').text('newest');
setTimeout(function(){sendd()},3500)
},1500)
}
/* ############################################################ Inne */
else{
console.log("### Outside DaHub")
}
`
所有其余的代码都可以正常工作。
我的代码有什么问题?
或提交/发送评论的另一种方式是什么?
最佳答案
十分确定您无法模拟点击。使用click()
只会调用该元素的click
事件处理程序,该事件处理程序可能未注册。如果有问题的按钮负责提交表单,则可能值得尝试直接提交表单,如下所示:
document.getElementById("myForm").submit();
另一方面,如果Submit函数与AJAX一起使用(即通过javascript),则值得查看源代码并查找处理注释的确切函数,那么您可以直接调用该函数。