Cópia secreta para a função JavaScript da área de transferência no Chrome e Firefox?

150

Atualizar

Parece que os navegadores estão começando a suportar cópia nativamente em JS


Nas janelas do console do Chrome e Firefox no Mac eu posso executar

copy("party in your clipboard!");

e o texto é copiado para a minha área de transferência. Eu pesquisei SO e Google e não consigo encontrar nada sobre isso.

  • Eles são específicos para cada navegador?
  • Onde posso encontrar mais informações sobre essas funções JavaScript?

Versões do navegador:

texto alternativo texto alternativo

JavaScript retornado do console do Chrome ao executar 'copiar'

function (object)
    {
        if (injectedScript._type(object) === "node") {
            var nodeId = InjectedScriptHost.pushNodePathToFrontend(object, false, false);
            InjectedScriptHost.copyNode(nodeId);
        } else
            InjectedScriptHost.copyText(object);
    }
  • O que este código significa?

Aqui estão duas capturas de tela da execução da função de cópia no console do Chrome com todas as extensões do Chrome desativadas

texto alternativo

texto alternativo

Mike Grace
fonte
Qual console do Firefox você está usando, Error Console?
Matthew Flaschen
2
Eu não sou programador C ++, mas encontrei void InjectedScriptHost::copyText(const String& text)em opensource.apple.com/source/WebCore/WebCore-7533.18.1/inspector/…
Kai
@Kai, Hmmmmmm ... parece que talvez tenha sido incorporado ao webkit de código aberto da Apple?
Mike Grace
Infelizmente, esse comando não funciona em uma extensão do Chrome, portanto, deve ser específico ao console das ferramentas do desenvolvedor no WebKit.
Atomicules 23/03
confirme que isso também funciona com o Safari. Bom achado!
bizi

Respostas:

62

Acredito que essas são funções predefinidas do console do Firebug - pelo menos esse parece ser o caso do Firebug. Se você tentar chamar, window.copypor exemplo, receberá um aviso sobre a função não definida, por isso definitivamente não é uma função do navegador e não pode ser usada em arquivos JavaScript normais. As seguintes funções também parecem funcionar no console JavaScript, depois de brincar um pouco com ele:

  • clear()
  • profile()

A execução destes no console do Chrome revela a fonte por trás dessas funções no console do Webkit:

> profile
function ()
{
return console.profile.apply(console, arguments)
}

> clear
function ()
{
InjectedScriptHost.clearConsoleMessages();
}

> copy
function (object)
{
if (injectedScript._type(object) === "node")
object = object.outerHTML;
InjectedScriptHost.copyText(object);
}

Enquanto a fonte Firebug também define uma lista de funções:

this.clear = function()  // no web page interaction
{
    Firebug.Console.clear(context);
};

this.inspect = function(obj, panelName)  // no web page interaction
{
    Firebug.chrome.select(obj, panelName);
};

this.keys = function(o)
{
    return FBL.keys(o);  // the object is from the page, unwrapped
};

this.values = function(o)
{
    return FBL.values(o); // the object is from the page, unwrapped
};

// etc...
Yi Jiang
fonte
2
Parece que isso não funciona no Chrome 44 ao usar o console de depuração do node-inspector. Clipboard is not enabled in hosted mode. Please inspect using chrome://inspect
jcollum
1
Agradável. Isso funciona na versão 61.0.3163.100 do Chrome (versão oficial) (64 bits)!
Shanimal 14/10
1
Na minha aparência ferramenta de desenvolvedor do Chrome como ele está trabalhando e também funciona window.copy('content')(no Firefox apenas com copy('content')obras)
morhook