由于该选择是由 jQuery 驱动的,因此您可以使用 jQuery 对其进行更改并触发所有必要的 javascript。
但是您的 Greasemonkey 脚本必须使用injection或@grant none
mode,因为您需要触发页面的 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);
}
重要的:
该示例页面最多显示 9 个项目,因此不可能 100% 确定脚本正在执行所需的所有操作。使用 OP 的新示例页面,验证该脚本适用于 FF+GM 和 Chrome+TM。
- 被
<select>
包裹在一个带有 id: 的 div 中v_pagination_long
。使用它来帮助获得正确的控制。
该页面使用各种鼠标事件(不是单击),因此可能需要更多有状态的方法(无法确定,请参见第 1 项)。在这种情况下,演示页面不需要。请参阅在 AJAX 驱动的站点上为其他页面选择和激活正确的控件。