2

私はJavaScriptの初心者です。私はこれが可能かどうか、そして可能であればそれをどのように行うかを知る必要があります。

1時間ごとにWebページを自動的にリロードするGreasemonkeyスクリプトを作成し、ページをリロードした後、ボタンをクリックしてもらいたいのですが。

それは可能ですか?

4

1 に答える 1

5
  • クリックするものについては、この回答を参照してください。

  • のjavascriptリファレンスlocation.reload()も参照してください。

  • のより良いjavascriptリファレンスsetTimeout()も参照してください。

  • ボタンはAJAXを介してロードされる可能性があるため(質問の詳細情報が必要)、AJAXの遅延/変更を処理するためwaitForKeyElements()ユーティリティを参照してください。

  • 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);
于 2012-09-19T02:57:01.367 に答える