¿Copia secreta a la función JavaScript del portapapeles en Chrome y Firefox?

150

Actualizar

Parece que los navegadores están comenzando a admitir copias nativas en JS


En las ventanas de consola de Chrome y Firefox en Mac puedo ejecutar

copy("party in your clipboard!");

y el texto se copia en mi portapapeles. He buscado SO y Google y parece que no puedo encontrar nada al respecto.

  • ¿Son específicos de cada navegador?
  • ¿Dónde puedo encontrar más información sobre estas funciones de JavaScript?

Versiones del navegador:

texto alternativo texto alternativo

JavaScript devuelto desde la consola de Chrome al ejecutar 'copiar'

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

Aquí hay 2 capturas de pantalla de la ejecución de la función de copia en la consola Chrome con todas las extensiones de Chrome desactivadas

texto alternativo

texto alternativo

Mike Grace
fuente
¿Qué consola de Firefox estás usando, Error Console?
Matthew Flaschen
2
No soy un programador de C ++, pero encontré void InjectedScriptHost::copyText(const String& text)en opensource.apple.com/source/WebCore/WebCore-7533.18.1/inspector/…
Kai
@Kai, Hmmmmmm ... ¿parece que tal vez está integrado en el kit web de código abierto de Apple?
Mike Grace
Lamentablemente, este comando no funciona desde una extensión de Chrome, por lo que debe ser específico para la consola de herramientas del desarrollador en WebKit.
atomicules
confirme que esto también funciona con Safari. Buen hallazgo!
bizi

Respuestas:

62

Creo que estas son funciones predefinidas de la consola Firebug, al menos ese parece ser el caso de Firebug. Si intenta llamar, window.copypor ejemplo, recibirá una advertencia sobre la función no definida, por lo que definitivamente no es una función del navegador y no se puede usar en archivos JavaScript normales. Las siguientes funciones también parecen funcionar en la consola de JavaScript, después de jugar un poco con ella:

  • clear()
  • profile()

Ejecutarlos en la consola de Chrome revela la fuente detrás de estas funciones en la consola de 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);
}

Mientras que la fuente Firebug también define una lista de funciones:

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
fuente
2
Parece que esto no funciona en Chrome 44 cuando se utiliza la consola de depuración del inspector de nodos. Clipboard is not enabled in hosted mode. Please inspect using chrome://inspect
jcollum
1
Agradable. ¡Esto funciona en la versión 61.0.3163.100 de Chrome (compilación oficial) (64 bits)!
Shanimal
1
En mi herramienta de desarrollador de Chrome parece que funciona y también funciona window.copy('content')(en Firefox solo con copy('content')trabajos)
morhook