使用用户脚本在页面上遗漏了点击次数

时间:2014-02-16 23:19:25

标签: javascript jquery

我正在尝试点击.vbseo_like_link课程的每个链接。因此我使用以下代码:

jQ('.vbseo_like_link').each(function(){
    if((jQ(this).parent().parent().parent().css("opacity") > 0.5) && (jQ(this).children().hasClass('hwz-unlike-button') == false))
        this.click();
});

(使用jQ代替$以避免与网页本身发生jquery冲突。)

if语句只是一个检查,以确保按钮没有被按下,所以你可以忽略它。问题是在运行代码的下一个方面之前并没有按下所有按钮,按下下一页按钮:

var nextButton = jQ('#content ul a:contains("Next ›")');
if(nextButton.length > 0) {
    nextButton[0].click();
}

出于某种原因,下一页在完成之前的点击之前就已经被点击了。这可能是因为页面不是一直加载的吗?这是我的完整代码:

// ==UserScript==
// @namespace       likeButton
// @name            Hit that like button! 
// @description     Hit that like button!
// @author          Justin (Fogest)
// @match           http://forums.hardwarezone.com.sg/*
// @run-at document-end
// ==/UserScript==

// a function that loads jQuery and calls a callback function when jQuery has finished loading
function addJQuery(callback) {
  var script = document.createElement("script");
  script.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js");
  script.addEventListener('load', function() {
    var script = document.createElement("script");
    script.textContent = "window.jQ=jQuery.noConflict(true);(" + callback.toString() + ")();";
    document.body.appendChild(script);
  }, false);
  document.body.appendChild(script);
}

// the guts of this userscript
function main() {
    jQ('.vbseo_like_link').each(function(){
        if((jQ(this).parent().parent().parent().css("opacity") > 0.5) && (jQ(this).children().hasClass('hwz-unlike-button') == false))
            this.click();
    });
    var nextButton = jQ('#content ul a:contains("Next ›")');
    if(nextButton.length > 0) {
        nextButton[0].click();
    }
}

document.addEventListener('load', addJQuery(main));

0 个答案:

没有答案