2009-11-30 279 views
60

我只是無意中發現了一段代碼,我從來沒有見過之前:Javascript:document.execCommand跨瀏覽器?

document.execCommand('Copy');

這似乎剪貼板中的內容複製到焦點的元素。

此功能是否可用於跨瀏覽器?


我發現a page示出用於document.execCommand兼容性矩陣。

+1

Link是有趣的,但它太舊,只包括Firefox 2和犯規包括鍍鉻的。任何人都知道後面的矩陣? –

+2

請參閱http://caniuse.com/#feat=document-exec命令 –

回答

24

這是'設計模式',瀏覽器有效地將文檔轉換爲編輯器。 execCommand API起源於IE,後來是added to HTML5.支持哪些命令,以及它們在不同瀏覽器中的行爲。剪貼板訪問被視爲安全風險。

+0

剪貼板訪問:這就是我認爲的安全風險。謝謝! – jldupont

+3

對於那些想進一步研究的人來說,我遇到了下面的[代碼筆](http:// codepen。io/netsi1964/pen/QbLLGW),它可以對不同的瀏覽器提供的不同execCommand進行很好的細分。 –

+0

找到了相同的漏洞:https://github.com/dxa4481/Pastejacking/blob/master/index.html –

3

更新:好吧,document.execCommand記錄在the Mozilla DOM documentation中,但其描述與MSDN文檔略有不同。

我仍然確定它不在ECMA-262標準中。

+0

在Mozilla.org上,它是如何出現的? https://developer.mozilla.org/En/Document.execCommand – jldupont

+8

爲什麼DOM方法符合語言標準?我很確定'document'或'window'不是ECMA-262標準的一部分。 –

+1

@Elijah Gray:好點。 JavaScript語言由ECMA標準化,DOM由W3C標準化。但我不認爲'document.execCommand'也在W3C DOM標準中。 (快速檢查w3c.org上的DOM-1規範似乎證實了這一點。) –

4

是的,我用它在IE,Chrome,Safari。如果它適用於這些瀏覽器,那麼它應該適用於其他瀏覽器。無論如何,document對象的execCommand方法用於執行與瀏覽器中內置的Rich Text Editing功能相關的命令。該execCommand的語法如下:document.execCommand(command, uiBool, argument)

命令參數是要執行的命令 - 粗體,下劃線,字體等

然後你有uiBool這是布爾值,指定是否應該顯示默認的用戶界面。

最後一個參數是某些命令需要我們傳遞參數的參數。如果命令不需要參數,我們會傳遞一個值null作爲第三個參數。

例子:

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

或:

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