2017-03-17 141 views
1

我試圖用附加功能來定製TinyMCE。
我想添加兩個菜單項 - 粘貼HTML並複製HTML。TinyMCE從剪貼板複製和粘貼源代碼

裏面setup我添加兩個菜單項:

editor.addMenuItem('htmlPaste', { 
    text: 'Paste HTML', 
    icon: 'paste', 
    context: 'file', 
    onclick: function() { 
    tinymce.activeEditor.setContent('<span>some</span> html'); 
    editor.notificationManager.open({ 
     text: 'HTML pasted.', 
     type: 'info', 
     timeout: 2000, 
     closeButton: false 
    }); 
    } 
}); 
editor.addMenuItem('htmlCopy', { 
    text: 'Copy HTML', 
    icon: 'copy', 
    context: 'file', 
    onclick: function() { 
    editor.notificationManager.open({ 
     text: 'HTML copied.', 
     type: 'info', 
     timeout: 2000, 
     closeButton: false 
    }); 
    } 
}); 

部分缺少的是剪貼板訪問。我正在考慮使用clipboard.js,但我意識到TinyMCE具有這種內置,但它複製並粘貼普通內容而不是HTML源代碼。

我可以使用TinyMCE的內置功能來訪問剪貼板嗎?所以當我點擊Paste HTML TinyMCE會更新內容的底層源代碼,當我點擊Copy HTML時,TinyMCE會將源代碼複製到剪貼板(在設置剪貼板內容之前,我想添加一些修改(替換標籤))。

我想使用此功能,因爲TinyMCE在用戶禁用剪貼板訪問時支持回退功能。

這裏是我的原型上codepen:http://codepen.io/anon/pen/EWbpyr

編輯: 展望通GitHub上,我發現了一些有用的功能,如setClipboardData但我仍然不知道如何把它從我的代碼中調用。

回答

0

我不認爲你能夠在大多數現代瀏覽器上做你想做的事情。

如果您嘗試使用內置的剪切/複製/粘貼按鈕TinyMCE的你看到這對大多數的瀏覽器:

「您的瀏覽器不支持剪貼板的直接訪問,請 使用。而不是Ctrl + X/C/V鍵盤快捷鍵。「

正如來自編輯器的消息指出的,這僅僅是您在某些瀏覽器中可以/不可以直接通過JavaScript執行操作的限制。

想象一下,如果您的任意JavaScript可以在喜歡的時候訪問剪貼板,您可以做些什麼? 「壞人」不會按照規則玩遊戲,那麼如果(在加載網頁時)他們擁有JavaScript,抓取剪貼板上的所有內容並將其發送到他們的服務器?隨着時間的推移,瀏覽器製造商意識到直接訪問剪貼板是「不好的」......通過讓用戶鍵入CRTL + C和CRTL + V,您可以有效地告訴瀏覽器您希望它訪問剪貼板。

IE11確實允許通過傳統API訪問,但Edge目前根本不支持剪貼板API(至少在我沒有寫這個的時候)。

+0

感謝您的回覆,我知道我無法獲取剪貼板內容,但可能我可以設置剪貼板內容。我可以顯示'工具 - >源代碼',並允許用戶粘貼他的剪貼板中的源代碼。但還有第二部分,我希望能夠使用按鈕,菜單項或鍵盤快捷方式複製HTML內容。我知道用戶可以到'Tools-> Source code'並將其複製到那裏,但我想替換一些標籤,所以我不能使用該面板。我只是檢查最新的Chrome瀏覽器,並且如您所寫的粘貼不起作用,但複製選項會。 – Misiu