Автоматический выбор элементов на странице (раскрывающийся список) с использованием скрипта, похожего на 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);
}



Важный:

  1. Эта примерная страница показывает максимум 9 элементов, поэтому невозможно быть на 100% уверенным, что скрипт делает все необходимое. На новой странице примера OP убедитесь, что скрипт работает на FF+GM и Chrome+TM.
  2. <select> обернут в div с идентификатором: v_pagination_long, Используйте это, чтобы помочь получить правильный контроль.
  3. На этой странице используются различные события мыши (не щелчки), поэтому может потребоваться более подходящие с учетом состояния подходы (не могу сказать наверняка, см. Пункт 1). Не требуется в этом случае для демонстрационной страницы. См. Выбор и активация правильных элементов управления на сайте, управляемом AJAX, для других страниц.
Другие вопросы по тегам