2

このページを見ると、ページごとの結果を表示するドロップダウンがあります。10、20、または 50 のいずれかです。

1 ページあたり 50 個の選択をシミュレートする Greasemonkey のようなスクリプトが必要です

簡単に参照できるように、ページの HTML の一部を以下に示します。

<select><option value="10">10</option><option value="20">20</option><option value="50">50</option></select> per page

どうすればこれを達成できますか?

編集

20 を超えるアイテムでURL が更新されました

これは Fluid.app の Greasekit 用です(これは非常に古いですが、使用に制限されています)。ブロックは、それが非常に古く、更新されていないことを確実に伝えています。(jQueryすら使えないと思います)

4

1 に答える 1

2

その選択はjQueryによって駆動されるため、jQueryを使用して変更し、必要なすべてのjavascriptをトリガーできます。

ただし、Greasemonkey スクリプトでは、ページの JavaScript 関数をトリガーする必要があるため、Injectionまたは@grant nonemodeを使用する必要があります。

そのサンプル ページの完全なスクリプトは次のようになります。

// ==UserScript==
// @name        _Amazon-like store, auto select 50 items per page
// @include     https://dl.dropboxusercontent.com/u/5546881/*
// @grant       none
// ==/UserScript==

//-- $ not defined. Use jQuery
jQuery('#v_pagination_long select').val (50).trigger ('change');



アップデート:

OP は実際には Greasemonkey を使用していないため、または Tampermonkey のような最新の同等物@grant noneはサポートされていません。スクリプト インジェクション
を使用した同じスクリプトを次に示します。これは、ほぼすべてのブラウザ + ユーザー スクリプト エンジンの組み合わせで動作します。

// ==UserScript==
// @name        _Amazon-like store, auto select 50 items per page
// @include     https://dl.dropboxusercontent.com/u/5546881/*
// @grant       GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
function GM_main () {
    jQuery('#v_pagination_long select').val (50).trigger ('change');
}

addJS_Node (null, null, GM_main);

function addJS_Node (text, s_URL, funcToRun, runOnLoad) {
    var D                                   = document;
    var scriptNode                          = D.createElement ('script');
    if (runOnLoad) {
        scriptNode.addEventListener ("load", runOnLoad, false);
    }
    scriptNode.type                         = "text/javascript";
    if (text)       scriptNode.textContent  = text;
    if (s_URL)      scriptNode.src          = s_URL;
    if (funcToRun)  scriptNode.textContent  = '(' + funcToRun.toString() + ')()';

    var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
    targ.appendChild (scriptNode);
}



重要:

  1. このサンプル ページには最大 9 個のアイテムが表示されているため、スクリプトが必要なすべてを実行していることを 100% 保証することは不可能です。OP の新しいサンプル ページで、スクリプトが FF+GM と Chrome+TM で動作することを確認しました。
  2. <select>id: の div でラップされますv_pagination_long。それを使用して、正しいコントロールを取得します。
  3. そのページは (クリックではなく) さまざまなマウス イベントを使用するため、よりステートフルなアプローチが必要になる可能性があります (確かなことはわかりません。項目 1 を参照してください)。この場合、デモ ページには必要ありません。他のページについては、「AJAX 駆動型サイトで適切なコントロールを選択してアクティブ化する」を参照してください。
于 2013-10-19T23:32:00.440 に答える