使用类似 Greasemonkey 的脚本自动选择每页的项目(下拉列表)
Auto select items-per-page (a drop down) using a Greasemonkey-like script
如果你看一下这个页面,有一个下拉菜单来显示每页的结果:它可以是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 多个项目
这是针对 Fluid.app 上的 Greasekit(它很旧,但我仅限于使用它)。布洛克可靠地告诉我,它已经很旧了,不再更新了。(我认为我什至无法使用jQuery)
由于该选择是由jQuery驱动的,因此您可以使用jQuery来更改它并触发所有必要的javascript。
但是你的 Greasemonkey 脚本必须使用注入或@grant none
模式,因为你需要触发页面的 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>
包装在一个div 中,ID 为v_pagination_long
。使用它来帮助获得正确的控件。该页面使用各种鼠标事件(不是单击),因此可能需要更多有状态的方法(无法确定,请参阅第 1 项)。在这种情况下,演示页面不需要。有关其他页面,请参阅在 AJAX 驱动的站点上选择和激活正确的控件。
相关文章:
- 如何在页面加载后禁用下拉列表框项目的选择
- 如何使用jquery将所选项目从一个下拉组列表(optgroup)移动到另一个下拉列表(optgroup)
- 如何在角度js的自动完成下拉列表中对项目列表(按字母顺序)进行排序
- 从下拉列表中获取所选项目,并将其保存到php变量中
- 更改localStorage和下拉列表中的项目值
- 根据下拉列表中选择的项目隐藏所有元素
- 仅在单击下拉列表中的项目时显示列表框
- 双击下拉列表中的选定项目
- 我正试图获得一个带有复选框的多选下拉列表,在填充项目和获得所有选中的工作时遇到了一些问题
- 在复选框取消选中事件中从HTML下拉列表中删除项目
- AngularJS下拉列表在选择项目后丢失内容
- 如何将所选项目从角度 UI 下拉列表发送回角度控制器
- 从下拉列表中的数组中选取某个项目,然后将其显示为第一项并按字母顺序显示
- 检查是否未从下拉列表中选择项目
- 通过下拉列表框上的 appendChild 方法添加的项目不会显示在 IE8 下
- 使用类似 Greasemonkey 的脚本自动选择每页的项目(下拉列表)
- 表单下拉列表(微调器)并尝试将值更改为所选项目值
- 使用 javascript 将项目添加到下拉列表中并保留在回发中
- 所选项目-下拉列表- SQL
- 我可以添加项目下拉列表只有当我点击它(onclick事件)