Geheime Kopie in die Zwischenablage JavaScript-Funktion in Chrome und Firefox?

150

Aktualisieren

Es sieht so aus, als würden Browser das native Kopieren in JS unterstützen


In den Konsolenfenstern von Chrome und Firefox auf Mac kann ich ausführen

copy("party in your clipboard!");

und der Text wird in meine Zwischenablage kopiert. Ich habe SO und Google durchsucht und kann anscheinend nichts dazu finden.

  • Sind diese für jeden Browser spezifisch?
  • Wo finde ich weitere Informationen zu diesen JavaScript-Funktionen?

Browserversionen:

Alt-Text Alt-Text

JavaScript wurde von der Chrome-Konsole zurückgegeben, wenn "Kopieren" ausgeführt wurde.

function (object)
    {
        if (injectedScript._type(object) === "node") {
            var nodeId = InjectedScriptHost.pushNodePathToFrontend(object, false, false);
            InjectedScriptHost.copyNode(nodeId);
        } else
            InjectedScriptHost.copyText(object);
    }
  • Was bedeutet dieser Code?

Hier sind 2 Screenshots der Ausführung der Kopierfunktion in der Chrome-Konsole, bei der alle Chrome-Erweiterungen deaktiviert sind

Alt-Text

Alt-Text

Mike Grace
quelle
Welche Firefox-Konsole verwenden Sie, Fehlerkonsole?
Matthew Flaschen
2
Ich bin kein C ++ - Programmierer, aber ich habe void InjectedScriptHost::copyText(const String& text)in opensource.apple.com/source/WebCore/WebCore-7533.18.1/inspector/…
Kai
@Kai, Hmmmmmm ... sieht es so aus, als wäre es dann in Apples Open-Source-Webkit integriert?
Mike Grace
Leider funktioniert dieser Befehl nicht mit einer Chrome-Erweiterung, daher muss er spezifisch für die Entwickler-Tools-Konsole in WebKit sein.
Atomicules
Bestätigen Sie, dass dies auch mit Safari funktioniert. Schöner Fund!
Bizi

Antworten:

62

Ich glaube, dies sind vordefinierte Firebug-Konsolenfunktionen - zumindest scheint dies bei Firebug der Fall zu sein. Wenn Sie beispielsweise versuchen, einen Aufruf window.copydurchzuführen, erhalten Sie eine Warnung zu einer nicht definierten Funktion. Es handelt sich also definitiv nicht um eine Browserfunktion und kann nicht in normalen JavaScript-Dateien verwendet werden. Die folgenden Funktionen scheinen auch in der JavaScript-Konsole zu funktionieren, nachdem Sie ein wenig damit herumgespielt haben:

  • clear()
  • profile()

Wenn Sie diese in der Chrome-Konsole ausführen, wird die Quelle für diese Funktionen in der Webkit-Konsole angezeigt:

> 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);
}

Während die Firebug-Quelle auch eine Liste von Funktionen definiert:

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
quelle
2
Scheint, dass dies in Chrome 44 nicht funktioniert, wenn die Node-Inspector-Debugging-Konsole verwendet wird. Clipboard is not enabled in hosted mode. Please inspect using chrome://inspect
JCollum
1
Nett. Dies funktioniert in Chrome Version 61.0.3163.100 (Official Build) (64-Bit)!
Shanimal
1
Auf meinem Chrome-Entwicklertool sieht es so aus, als würde es funktionieren und funktioniert auch window.copy('content')(auf Firefox nur mit copy('content')Werken)
Morhook