使用javascript

时间:2016-02-01 02:06:33

标签: javascript jquery html

所以我试图点击特定网页上的所有按钮。但棘手的是,当鼠标悬停在按钮上时,按钮才会出现。单击页面上的所有按钮后,我需要单击下一页按钮。再次单击新网页上的所有按钮,依此类推。

我实际上有一个工作脚本。但我在javascript中使用setInterval函数,我觉得这是一种hacky方式。这是我的工作脚本:

alert ("Please refresh the page to stop");

setInterval(function () {

    var inputs=document.getElementsByClassName('tw-action-button btn btn-sm ng-isolate-scope btn-primary');
    var names=document.getElementsByClassName('screen-name');       

    for(var i=0; i<inputs.length; i++){
        inputs[i].click();      
    }       

}, 250);

//Change the page in every 15 seconds   
setInterval(function () {

var nextButton=document.getElementsByClassName('btn btn-default btn-forward');

    for(var i=0; i<nextButton.length; i++){
        nextButton[i].click();
    }

    window.scrollTo(0,0);

}, 10000);

但是,当我将上面的代码更改为下面的代码时,脚本不会单击按钮。我是否必须使用setInterval函数?这是经过修改但无效的代码:

function clickButtons(){

        var followButtons = $('.buttonClass');
        var numberOfButtons = followButtons.length;

        for(var i=0; i<numberOfButtons; i++){
            followButtons[i].click();
        }
        setTimeout(nextPage, 500);
    }

    function nextPage(){

        var nextPageBtn = $('.nextPageButtonClass');
        nextPageBtn.click();    

        setTimeout(clickButtons,500);
    }

这是网页的HTML: HTML for the webpage

2 个答案:

答案 0 :(得分:0)

我可能会考虑使用书签或项目是否保证,浏览器扩展程序。

由于您的代码需要将相同的操作应用于多个页面,因此您需要以某种方式访问​​每个页面的HTML,同时保留对JS代码的访问权限。

对于书签,每次单击它时,您可以处理页面上的所有按钮,然后单击前进到下一页的按钮。此时,您只需再次点击书签即可。

在扩展的情况下,我使用一个布尔值来指示每次我从拥有域访问页面时是否要执行指定的操作。然后,一旦启用,我只需访问第一页并让它单击所有按钮,单击前进的按钮并允许重复调用脚本。

我认为书签将是这两者中最合适的选项 - 快速,简单,少量边缘案例需要注意。

我有一个书签,允许您在页面上对任何表进行排序。只需导航到页面,点击书签然后瞧!单击标题行中的列可根据该行对表进行排序。它是由sorttable js库(http://www.kryogenix.org/code/browser/sorttable/#ajaxtables

提供的示例代码

这里是小书签的网址&#39;: javascript:(function(){var s=document.createElement('script');s.src='http://kryogenix.org/code/browser/sorttable/sorttable.js';s.onload=function(){sorttable.init();Array.prototype.slice.call(document.getElementsByTagName('table')).forEach(function(t){sorttable.makeSortable(t);})};document.getElementsByTagName('head')[0].appendChild(s);})()

enter image description here

在我看来,好像插入一些代码来执行按钮点击其中一个是微不足道的。

答案 1 :(得分:0)

这很奇怪,应该有效。我尝试生成与你相同的逻辑,并且它成功运行,这是我的代码:

<!DOCTYPE html>
<HTML>
<HEAD>
</HEAD>
<BODY>
    <button type="button" onclick="doAction()" class="tw-action-button btn btn-sm ng-isolate-scope btn-primary"></button>
    <button type="button" onclick="doAction()" class="tw-action-button btn btn-sm ng-isolate-scope btn-primary"></button>
    <script type="text/javascript">
        function doAction(){
            alert("I'm clicked");
        }
        function clickButtons(){
            var inputs = document.getElementsByClassName("tw-action-button btn btn-sm ng-isolate-scope btn-primary");
            for (var index=0;index < inputs.length; index++){
                inputs[index].click();
            }
        }
        setTimeout(clickButtons,500);
    </script>
</BODY>
</HTML>

然后,当我再次查看您的代码时,看起来您的JQuery未成功加载,因为您使用选择器,这是我能想到的唯一可能性。

var followButtons = $('.buttonClass');

要确保已成功加载,请尝试使用此脚本替换所有javascript脚本,并查看是否会弹出警告消息:

<script type="text/javascript">
    $(document).ready(function(){
        alert("JQuery loaded");
    });
</script>