2009-11-30 23 views
60

Właśnie natknęliśmy się na kawałek kodu, który nigdy nie widziałem przed:Javascript: document.execCommand w przeglądarce?

document.execCommand('Copy');

co wydaje się skopiować zawartość schowka do elementu w centrum uwagi.

Czy ta funkcja jest dostępna w różnych przeglądarkach?


I znaleziono a page pokazujący matrycę kompatybilności dla document.execCommand.

+1

Link jest interesująca, ale jest tak, że zawiera tylko stary zapalić 2, nie obejmuje wcale chrom. Ktoś wie o późniejszej matrycy? –

+2

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

Odpowiedz

24

Jest to "tryb projektowania", w którym przeglądarka skutecznie przekształca dokument w edytor. Interfejs API execCommand pochodzi z IE i był późniejszy added to HTML5. Dokładnie jakie polecenia są obsługiwane, a ich zachowanie jest różne w różnych przeglądarkach. Dostęp do schowka jest uznawany za zagrożenie bezpieczeństwa.

+0

Dostęp do schowka: to jest to, co myślałem, tj. Ryzyko bezpieczeństwa. Dzięki! – jldupont

+3

Dla tych, którzy chcą zagłębić się w to, natknąłem się na następujące [kod] (http: // codepen.io/netsi1964/pen/QbLLGW), co daje całkiem niezły podział różnych poleceń execCommand w różnych przeglądarkach. –

+0

Znaleziono exploit na tym samym: https://github.com/dxa4481/Pastejacking/blob/master/index.html –

3

Aktualizacja: Cóż, document.execCommand jest udokumentowana w the Mozilla DOM documentation, ale jej opis wygląda nieco inaczej niż w dokumentacji MSDN.

Wciąż jestem pewien, że nie jest to standard ECMA-262.

+0

Jak to możliwe, że w Mozilla.org są jakieś blipy? https://developer.mozilla.org/En/Document.execCommand – jldupont

+8

Dlaczego metoda DOM powinna być w standardzie językowym? Jestem prawie pewien, że 'document' lub' window' nie są częścią standardu ECMA-262. –

+1

@ Elijah Gray: Dobra uwaga. Język JavaScript jest standaryzowany przez ECMA, podczas gdy DOM jest standaryzowany przez W3C. Ale nie sądzę, że 'document.execCommand' jest w standardzie DOM W3C. (Szybka weryfikacja specyfikacji DOM-1 na w3c.org zdaje się to potwierdzać.) –

4

Tak, użyłem go w IE, Chrome, Safari. Jeśli działa dla tej przeglądarki, to powinna działać na resztę. W każdym razie, metoda execCommand obiektu document służy do wykonywania poleceń związanych z wbudowanymi funkcjami edycji tekstu w przeglądarce. Składnia execCommand jest następująca: document.execCommand(command, uiBool, argument)

Parametr polecenia jest poleceniem do wykonania - pogrubienie, podkreślenie, czcionka itp

Wtedy masz uiBool czyli wartość logiczną, która określa, czy domyślny interfejs użytkownika powinien zostać wyświetlony.

Ostatni parametr jest używany jako argument dla niektórych poleceń, które wymagają przekazania argumentu. Jeśli polecenie nie wymaga żadnego argumentu, jako trzeci parametr podajemy wartość null.

przykład:

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

czyli

document.getElementById("whateverID").document.execCommand('bold', false, <a variable nae>); 
Powiązane problemy