是否有可能使用greasemonkey脚本自动执行firefox中的Ctrl + A(全选)操作?

时间:2010-07-22 06:11:56

标签: javascript firefox javascript-events greasemonkey

是否可以编写Greasemonkey脚本来触发Firefox中的 Ctrl + A (全选)操作? (如果启用了脚本,则在加载新页面之后???)

在任何级别帮助我。

更新

  

“Firefox已经有了加速读取或朗读所选文本的插件。我只想自动选择要选择文本的部分。”

1 个答案:

答案 0 :(得分:4)

var r = document.createRange()
r.selectNode(document.body)
window.getSelection().addRange(r)

我尝试创建一个新的Greasemonkey脚本,输入上面的代码(我从this page抓取并编辑),然后加载页面。

它确实选择了所有文本,但对于某些页面,它会立即被取消选中。例如,谷歌的主页,因为该页面集中了搜索字段。


BA更新:

这对谷歌不起作用,因为它与本机脚本作斗争。但是,通过在onload重新运行代码并再次运行代码,我们可以保留选择。

此外,如果原生脚本将焦点设置为inputtextarea,我们必须与之斗争。

因此,包含所有这些想法的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 ();
}