2009-11-30 28 views
60

tôi chỉ vấp ngã trên một đoạn mã mà tôi chưa bao giờ thấy trước đây:Javascript: document.execCommand cross-browser?

document.execCommand('Copy');

mà dường như để sao chép các nội dung clipboard để các phần tử trong tập trung.

Chức năng này có khả dụng trên trình duyệt không?


Tôi tìm thấy a page hiển thị ma trận tương thích cho document.execCommand.

+1

Link là thú vị, nhưng nó là như vậy cũ nó chỉ bao gồm firefox 2 và doesnt bao gồm chrome ở tất cả. Có ai biết về ma trận sau không? –

+2

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

Trả lời

24

Điều này dành cho 'chế độ thiết kế', nơi trình duyệt biến tài liệu thành trình chỉnh sửa một cách hiệu quả. API execCommand bắt nguồn từ IE và sau đó là added to HTML5. Chính xác các lệnh nào được hỗ trợ, cũng như hành vi của chúng khác nhau trên các trình duyệt. Truy cập Clipboard được coi là một nguy cơ bảo mật.

+0

Truy cập Clipboard: đó là những gì tôi nghĩ tức là rủi ro bảo mật. Cảm ơn! – jldupont

+3

Đối với những người muốn nhìn sâu hơn vào nó, tôi đã đi qua [code code] sau (http: // codepen.io/netsi1964/pen/QbLLGW) cung cấp một phân tích khá tốt về các execCommand khác nhau có sẵn với các trình duyệt khác nhau. –

+0

Tìm thấy một khai thác trên cùng: https://github.com/dxa4481/Pastejacking/blob/master/index.html –

3

Cập nhật: Vâng, document.execCommand được ghi lại trong the Mozilla DOM documentation, nhưng mô tả của nó có hơi khác so với tài liệu MSDN.

Tôi vẫn chắc chắn nó không nằm trong tiêu chuẩn ECMA-262.

+0

Làm thế nào đến có một số blips của nó trên Mozilla.org? https://developer.mozilla.org/En/Document.execCommand – jldupont

+8

Tại sao một phương thức DOM sẽ ở trong một tiêu chuẩn ngôn ngữ? Tôi khá chắc chắn 'tài liệu' hoặc' cửa sổ' không phải là một phần của tiêu chuẩn ECMA-262. –

+1

@Elijah Gray: Tốt. Ngôn ngữ JavaScript được chuẩn hóa bởi ECMA, trong khi DOM được chuẩn hóa bởi W3C. Nhưng tôi không nghĩ 'document.execCommand' nằm trong chuẩn W3C DOM. (Kiểm tra nhanh thông số DOM-1 trên w3c.org dường như để xác nhận điều này.) –

4

Có, tôi đã sử dụng nó trong IE, Chrome, Safari. Nếu nó hoạt động cho các trình duyệt này thì nó sẽ làm việc cho phần còn lại. Dù sao, phương pháp execCommand của đối tượng document được sử dụng để thực thi các lệnh liên quan đến các tính năng Chỉnh sửa văn bản có dạng thức trong trình duyệt. Cú pháp của execCommand là như sau: document.execCommand(command, uiBool, argument)

Tham số lệnh là lệnh để thực hiện - đậm, gạch dưới, font chữ, vv

Sau đó, bạn có uiBool mà là giá trị boolean mà xác định có hay không giao diện người dùng mặc định sẽ được hiển thị.

Và tham số cuối cùng là đối số sử dụng cho một số lệnh yêu cầu chúng tôi chuyển đối số. Nếu không có đối số được yêu cầu bởi lệnh, chúng ta chuyển giá trị null làm tham số thứ ba.

Ví dụ:

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

hay:

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