我正在尝试为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),则值得查看源代码并查找处理注释的确切函数,那么您可以直接调用该函数。

09-26 19:19