2010-12-30 4 views
116

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

Sieht aus wie browsers are starting to support copy natively in JS


In den Konsolenfenster sowohl Chrome und Firefox auf Mac I

copy("party in your clipboard!"); 

und der Text wird kopiert meine Zwischenablage ausführen kann. Ich habe SO und Google gesucht und kann dazu nichts finden.

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

Browser-Versionen:

alt text alt text

zurück JavaScript von Chrome Konsole, wenn meine 'Kopie'

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 ausgeführt wird?

Hier gibt es 2 Screenshots von allen Chrome-Erweiterungen Kopierfunktion in Chrome-Konsole ausgeführt wird deaktiviert

alt text

alt text

+0

Welche Firefox-Konsole Konsole Sie verwenden, Fehler? –

+0

@Matthew Flaschen, Firebug. –

+2

Ich bin kein C++ Programmierer, aber ich fand 'Leere InjectedScriptHost :: Copytext (const String & Text)' in http://opensource.apple.com/source/WebCore/WebCore-7533.18.1/inspector/InjectedScriptHost.cpp – Kai

Antwort

50

Ich glaube, diese vordefinierten Firebug-Konsole Funktionen sind - zumindest das scheint sei der Fall für Firebug. Wenn Sie beispielsweise versuchen, window.copy aufzurufen, erhalten Sie eine Warnung, dass die Funktion nicht definiert ist. Es handelt sich also definitiv nicht um eine Browserfunktion und kann nicht in normalen JavaScript-Dateien verwendet werden. Folgende Funktionen scheint auch in der JavaScript-Konsole zu arbeiten, nachdem er mit diesem ein wenig herumspielen:

  • clear()
  • profile()

diese in der Chrome-Konsole ausgeführt wird enthüllt die Quelle hinter Diese Funktionen in der Webkit-Konsole:

> 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 source definiert auch eine Liste von Funktionen:

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... 
+13

+1 nette detektivische Arbeit – SeanDowney

+1

Scheint, dass dies in Chrome 44 nicht funktioniert, wenn Sie die Debug-Konsole node-inspector verwenden. 'Die Zwischenablage ist im gehosteten Modus nicht aktiviert. Bitte überprüfen Sie mit chrome: // inspect' – jcollum

+0

Nizza. Dies funktioniert in der Chrome-Version 61.0.3163.100 (Official Build) (64-Bit)! – Shanimal