Javascript 使用类似Greasemonkey的脚本自动选择每页的项目(下拉列表)
如果你看一下,有一个下拉列表显示每页的结果:可以是10、20或50 我想一个脚本来模拟选择每页50 为便于参考,此处提供了一些HTML: 每页Javascript 使用类似Greasemonkey的脚本自动选择每页的项目(下拉列表),javascript,greasemonkey,greasekit,fluid-mac-app-engine,Javascript,Greasemonkey,Greasekit,Fluid Mac App Engine,如果你看一下,有一个下拉列表显示每页的结果:可以是10、20或50 我想一个脚本来模拟选择每页50 为便于参考,此处提供了一些HTML: 每页102050 请问我怎样才能做到这一点 编辑 超过20项 这是给Greasekit的(它很旧,但我只能使用它)。布罗克可靠地告诉我,它非常旧,不再更新。(我甚至不认为我可以使用jQuery)因为这个选择是由jQuery驱动的,所以可以使用jQuery来更改它并触发所有必要的javascript 但是您的Greasemonkey脚本必须使用or,因为您需要
102050
请问我怎样才能做到这一点
编辑
超过20项
这是给Greasekit的(它很旧,但我只能使用它)。布罗克可靠地告诉我,它非常旧,不再更新。(我甚至不认为我可以使用jQuery)因为这个选择是由jQuery驱动的,所以可以使用jQuery来更改它并触发所有必要的javascript 但是您的Greasemonkey脚本必须使用or,因为您需要触发页面的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);
}
重要提示:
被包装在一个div中,id为:v_pagination_long
。用它来帮助获得正确的控制谢谢不过,我并没有完全使用Greasemonkey;我正在使用一种叫做Greasekit的东西(非常类似)。关于第2点,我有另一个示例页面可以尝试,它有几百个条目。(虽然这不是公开的)。再说一次,关于第2点,我该怎么做呢?(我是Javascript的新手)。它是否类似于
document.getElementsByDiv
?[经研究,这不是一个真正的命令…]那document.getElementById(“id”)
该死,我测试过了,它似乎不起作用。我刚刚读了你所有的脚注,可能是因为[3](它使用鼠标事件)。关于[4],我将创建一个包含更多项目的新页面,以便对其进行全面测试。非常感谢你!你没有在问题中指定Greasekit!我在FF+GM中测试了这个脚本,它运行正常。它也应该在Chrome+浏览器中工作。至于Greasekit,据我所知,它已经5年没有更新了。我认为it或Ninjakit不支持@grant none
,所以需要使用脚本注入。请参阅我在答案中链接的问题。更新了答案。即使对于Greasekit也应该有效。不确定是否在流体中。您的示例页面使用jQuery。如果您的Fluid应用程序运行相同类型的页面,那么您的用户脚本也可以使用页面的jQuery。
// ==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);
}