2012-09-18 40 views
2

我是JavaScript的初学者。我需要知道这是否可行,如果是,那么该怎么做。我的Greasemonkey脚本如何自动重新加载页面,并自动点击一个按钮?

我想创建一个Greasemonkey脚本,每隔一小时自动重新加载一个网页,然后重新加载页面后,我希望它为我点击一个按钮。

这可能吗?

+0

是,使用'addEventListener','setTimeout'和'click'。 – Jay

+0

那么我该如何开始呢?是否有可能将其设置为重新加载并以随机间隔点击? –

回答

5
  • 对于点击的东西,请参阅this answer。请参阅a javascript reference for location.reload()。请参阅a better javascript reference for setTimeout()

  • 由于按钮可以通过AJAX加载(需要更多信息),参考the waitForKeyElements() utility,用于处理AJAX延迟/修改。

  • 开始学习jQuery;它会为你节省大量的痛苦和努力。

  • 确定所需按钮的jQuery选择器。您可以使用像Firebug这样的工具来帮助解决这个问题(请注意,jQuery选择器和CSS选择器大部分是相同的,但jQuery有更多的选项/功能)。

    例如,如果网页的HTML有一个看起来像这样的部分:

    <div id="content"> 
        <p>Blah, blah, blather...</p> 
    
        <h2>Your available actions:</h2> 
        <button class="respBtn">Like</button> 
        <button class="respBtn">Hate</button> 
        <button id="bestOption" class="respBtn">Nuke them all</button> 
    </div> 
    

    然后对3个按键选择可能是(分别):

    1. $("#content button.respBtn:contains('Like')");
    2. $("#content button.respBtn:contains('Hate')");
    3. $("#bestOption");(总是使用id,如果元素有一个。)


全部放在一起,这里是一个完整的的Greasemonkey脚本重新加载和点击:

// ==UserScript== 
// @name  _Reload and click demo 
// @include http://YOUR_SERVER.COM/YOUR_PATH/* 
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js 
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js 
// @grant GM_addStyle 
// ==/UserScript== 
/*- The @grant directive is needed to work around a major design 
    change introduced in GM 1.0. 
    It restores the sandbox. 
*/ 

waitForKeyElements ("#bestOption", clickTargetButton); 

function clickTargetButton (jNode) { 
    var clickEvent = document.createEvent ('MouseEvents'); 
    clickEvent.initEvent ('click', true, true); 
    jNode[0].dispatchEvent (clickEvent); 
} 

//--- Reload after 1 hour (1000 * 60 * 60 milliseconds) 
setTimeout (location.reload, 1000 * 60 * 60); 
相关问题