Автоматический выбор элементов на странице (раскрывающийся список) с использованием скрипта, похожего на Greasemonkey
Если вы посмотрите на эту страницу, есть выпадающий список для отображения результатов на странице: это может быть 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
Как мне этого добиться, пожалуйста?
Правки
URL обновлен более чем с 20 элементами
Это для Greasekit на Fluid.app (который очень старый, но я ограничен в его использовании). Брок достоверно говорит мне, что он очень старый и больше не обновляется. (Я не думаю, что я могу даже использовать JQuery)
1 ответ
Так как этот выбор управляется 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');
Обновить:
Поскольку ОП на самом деле не использует Greasemonkey или современный эквивалент, такой как Tampermonkey, @grant none
не поддерживается.
Вот тот же скрипт, использующий инъекцию скрипта, который будет работать практически в любом браузере + комбинация usercript-engine:
// ==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 с идентификатором:v_pagination_long
, Используйте это, чтобы помочь получить правильный контроль.На этой странице используются различные события мыши (не щелчки), поэтому может потребоваться более подходящие с учетом состояния подходы (не могу сказать наверняка, см. Пункт 1).Не требуется в этом случае для демонстрационной страницы. См. Выбор и активация правильных элементов управления на сайте, управляемом AJAX, для других страниц.