2

如果你看一下这个页面,有一个下拉菜单可以显示每页的结果:它可以是 10、20 或 50。

我想要一个类似 Greasemonkey 的脚本来模拟每页选择 50 个。

为了便于参考,页面中的一些 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(它很旧,但我只能使用它)。Brock 可靠地告诉我它已经很旧并且不再更新。(我认为我什至不能使用 jQuery)

4

1 回答 1

2

由于该选择是由 jQuery 驱动的,因此您可以使用 jQuery 对其进行更改并触发所有必要的 javascript。

但是您的 Greasemonkey 脚本必须使用injection@grant nonemode,因为您需要触发页面的 javascript 函数。

该示例页面完整脚本如下所示:

// ==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 回答