Возможно ли для сценария greasemonkey автоматизировать действие Ctrl + A (выбрать все) в Firefox? - PullRequest
2 голосов
/ 22 июля 2010

Можно ли написать сценарий Greasemonkey для запуска действия Ctrl + A (выбрать все) в Firefox? (после загрузки новой страницы, если скрипт включен ???)

Помоги мне на любом возможном для тебя уровне.

Обновление:

"У Firefox есть дополнения для ускорения чтения или чтения выделенного текста вслух. Я просто хочу автоматизировать ту часть, где должен быть выделен текст."

1 Ответ

4 голосов
/ 04 августа 2010
var r = document.createRange()
r.selectNode(document.body)
window.getSelection().addRange(r)

Я попытался создать новый скрипт Greasemonkey, набрав приведенный выше код (который я взял и отредактировал с этой страницы ), и загрузив страницу.

Он выбрал всетекст, но для некоторых страниц, он сразу становится невыбранным.Например, домашняя страница Google, потому что страница фокусируется на поле поиска.


Обновление BA:

Это не сработало в Google, потому что оно борется с собственными скриптами.Но, повторно запустив код на onload и снова после этого, мы можем сохранить выделение.

Кроме того, если собственный скрипт устанавливает фокус на input или textarea, мы должны бороться с этим.

Итак, скрипт Greasemonkey, который включает в себя все эти идеи и, кажется, работает:

//--- Save this as "SelectWholePage.user.js" and install with Greasemonkey.
//
// ==UserScript==
// @name            Select a whole page
// @namespace       google.com
// @description     Selects a whole page (equivalent to 'Ctrl-A').
// @include         http://www.google.com/*
// ==/UserScript==
//

/*--- Run the main function 3 times (when DOM ready, at load and just after
    load) because page javascript will often reset the focus and selection.
*/
LocalMain ();
window.addEventListener
(
    "load",
    function(evt)
    {
        LocalMain ();
        window.setTimeout (LocalMain, 222);
    },
    false
);

function LocalMain ()
{
    var WholePage       = document.createRange ();
    WholePage.selectNode (document.body);

    window.getSelection ().addRange (WholePage);

    var aInputs         = document.getElementsByTagName ("input");

    for (var J = aInputs.length-1;  J>0;  J--)
        aInputs[J].blur ();

    document.body.focus ();
}
...