2013-05-09 27 views
2

我想讀的是我開發的CKEditor 4.我可以在CKEDITOR的Paste事件中使用多少剪貼板API?

我已經確定,在Chrome中,如果我聽的文檔對象糊狀插件paste事件的clipboardData屬性事件,那麼我在處理程序中傳遞的事件對象將包含clipboardData屬性。我很驚訝地看到Firefox(v20)的情況並非如此。

這是我在我的CKEditor插件中使用的代碼,雖然我不認爲這是一個僅與CKEditor相關的問題。在Chrome中,我看到剪貼板數據對象,在Firefox中我沒有。

editor.document.on('paste', function(event) { 
    var clipboardData = event.data.$.clipboardData; 
    if (clipboardData) { 
    console.log(clipboardData); 
    } 
}); 

我看不到在MDN網站,如果這個確認什麼目前還不支持,我也相信IE10是爲了支持這一點,但它會在一個標準的API工作?

編輯:

我應該已經從一開始就這樣清楚,但我想開發粘貼圖片的支持,所以我需要爲文件讀取剪貼板數據。

+0

一些(稍微過時的)有關支持的詳細信息:http://www.quirksmode.org/dom/events/cutcopypaste.html。標準的API在這裏:http://dev.w3.org/2006/webapi/clipops/(仍是草案)。如果你很高興去代碼潛水,看看Github關於檢測Modernizr剪貼板API支持的討論https://github.com/Modernizr/Modernizr/pull/659 – thefrontender 2013-05-09 06:23:34

+0

提示:閱讀關於['contentDom'事件](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-contentDom),因爲你沒有正確地添加監聽器(或者至少不是最佳的)。 – Reinmar 2013-05-09 11:50:27

+0

@Reinmar - 我在contentDom事件中使用該片段。這個問題真的不是爲了關於CKEditor! – 2013-05-09 14:50:21

回答

3

如果你想在paste事件剪貼板中的數據,這些都可以幫助您::所以,你可以通過指定一個數字監聽優先「注入」你在不同階段的變化

的W3C標準(鉻):

event.clipboardData.getData(type) 

你不能得到類型frome event.clipboardData.types,通常是「text/plain」。 http://www.w3.org/TR/clipboard-apis/

IE:

window.clipboardData.getData(type) 

類型只能是 「文本」 或 「URL」:http://msdn.microsoft.com/en-us/library/ie/ms536436%28v=vs.85%29.aspx

火狐:

沒有API訪問ff.If你的剪貼板想要實現它,你可以嘗試其他方式,這取決於你想要做什麼。

1

這確實是CKEditor唯一的問題。事情是,你閱讀基礎的Javascript事件。但是你錯過了CKEditor開發者爲你製作的CKEditor圖層。

他們已經考慮到了瀏覽器之間的區別。而你唯一需要做的:

var clipboardData = ev.data.dataValue 
+0

這沒有幫助,因爲CKEditor不包含對clipboardData對象的支持,在Chrome中不能讀取圖像數據;這就是爲什麼我想直接參加基地活動。 – 2013-05-09 08:05:30

0

在IE中,我們可以使用所有的剪貼板API,而在Chrome和Firefox只能用在火粘貼event.So用戶不能用戶剪貼板的API從該網站,而在那裏辦公使用,MSN ..

1

你應該剪貼板數據上paste事件起到複製的東西:

editor.on('paste', function(event) { 
    console.log(event.data.dataValue); 
}); 

可以修改event.data.dataValue操縱粘貼的內容。另請注意,由於粘貼的數據爲pre-processed during pasting phases,因此優先級很重要。

editor.on('paste', function(event) { 
    console.log(event.data.dataValue); 
}, null, null, priority); 
+0

謝謝,我真的不應該把這個問題與CKEditor相關,因爲它的粘貼方法不支持獲取我需要的剪貼板數據。我將編輯該問題 – 2013-05-09 08:12:12