DeviantArt的脚本负责发送个人资料评论

时间:2014-02-25 16:14:59

标签: javascript jquery click

我正在尝试为DeviantArt.com编写一个greasemonkey脚本,如果我访问指定的个人资料,它将发送评论。我已经编写了可以输入我要发送的文本的脚本,但是发送它时遇到了问题。

我点击“提交评论”按钮的代码应该是: $(".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")
}

`

所有其余的代码完全正常工作。

我的代码出了什么问题? 或者提交/发送评论的另一种方式是什么?

2 个答案:

答案 0 :(得分:2)

非常确定您无法模拟点击次数。使用click()只会为该元素调用click事件处理程序,该处理程序可能未注册。如果相关按钮负责提交表单,则可能值得尝试直接提交表单,如下所示:

document.getElementById("myForm").submit();

另一方面,如果提交功能与AJAX一起工作(即通过javascript),则值得查看源代码并查找处理注释的确切函数,然后您可以直接调用该函数。

答案 1 :(得分:0)

DeviantArt的脚本无法查看在更改后仍然处于活动状态时是否有写入的内容,而无法发送空消息。

代码在控制台中工作,因为当点击控制台时,textarea失去了焦点,而当我让脚本执行此操作时,由于没有使用鼠标,textarea仍然处于聚焦状态。

在调用发送按钮之前使用$(':focus').blur()修复了问题。