2009-11-30 9 views
60

ich auf ein Stück Code stolpern nur, das ich noch nie gesehen:Javascript: document.execCommand Cross-Browser?

document.execCommand('Copy');

, die den Inhalt der Zwischenablage an das Element im Fokus zu kopieren scheint.

Ist diese Funktionalität browserübergreifend verfügbar?


fand ich a page, das eine Kompatibilitätsmatrix für document.execCommand zeigt.

+1

Link ist interessant, aber es ist so alt, es enthält nur firefox 2 und tut Chrom enthalten überhaupt. Wer kennt eine spätere Matrix? –

+2

Siehe http://caniuse.com/#feat=document-execcommand –

Antwort

24

Dies ist für 'Design-Modus', wo der Browser das Dokument effektiv in einen Editor verwandelt. Die execCommand-API stammt ursprünglich aus IE und wurde später added to HTML5.. Genau welche Befehle unterstützt werden, sowie ihr Verhalten variiert zwischen Browsern. Der Zugriff auf die Zwischenablage gilt als Sicherheitsrisiko.

+0

Zwischenablage Zugriff: das ist, was ich dachte, d. H. Sicherheitsrisiko. Vielen Dank! – jldupont

+3

Für diejenigen, die weiter darauf eingehen wollen, bin ich auf den folgenden Code gekommen: http: // codepen.io/netsi1964/pen/QbLLGW), die einen guten Überblick über die verschiedenen execCommands gibt, die mit verschiedenen Browsern verfügbar sind. –

+0

Einen Exploit auf demselben gefunden: https://github.com/dxa4481/Pastejacking/blob/master/index.html –

3

Update: Nun, document.execCommand ist in the Mozilla DOM documentation dokumentiert, aber seine Beschreibung dort sieht etwas anders als die MSDN-Dokumentation.

Ich bin immer noch ziemlich sicher, dass es nicht im ECMA-262-Standard ist.

+0

Wie kommt es, dass es auf Mozilla.org einige Punkte gibt? https://developer.mozilla.org/En/Document.execCommand – jldupont

+8

Warum sollte eine DOM-Methode in einem Sprachstandard sein? Ich bin mir ziemlich sicher, dass 'document' oder' window' auch nicht Teil des ECMA-262-Standards sind. –

+1

@Elijah Grey: Guter Punkt. Die JavaScript-Sprache ist von ECMA standardisiert, während das DOM vom W3C standardisiert ist. Aber ich denke nicht, dass "document.execommand" auch im W3C-DOM-Standard ist. (Eine schnelle Überprüfung der DOM-1-Spezifikation auf w3c.org scheint dies zu bestätigen.) –

4

Ja, ich habe es in IE, Chrome, Safari verwendet. Wenn es für diesen Browser funktioniert, sollte es für den Rest funktionieren. Wie auch immer, die execCommand Methode des document Objekts wird verwendet, um Befehle auszuführen, die sich auf die integrierten Rich Text Editing-Funktionen im Browser beziehen. Die Syntax der execCommand ist wie folgt: document.execCommand(command, uiBool, argument)

Der Befehlsparameter ist der Befehl auszuführen - fett, unterstrichen, Schriftart usw.

Dann haben Sie die uiBool, die den Booleschen Wert ist, ob oder nicht spezifiziert Die Standardbenutzeroberfläche sollte angezeigt werden.

Und der letzte Parameter ist das Argument verwenden für einige Befehle, die erfordert, dass wir ein Argument übergeben. Wenn das Kommando kein Argument benötigt, übergeben wir als dritten Parameter einen Wert von null.

Beispiel:

document.getElementById("whateverID").document.execCommand('bold', false, null); 

oder:

document.getElementById("whateverID").document.execCommand('bold', false, <a variable nae>); 
Verwandte Themen