首页 文章

我可以在CKEDITOR的Paste事件中使用多少Clipboard API?

提问于
浏览
2

我正在尝试为我正在为CKEditor 4开发的插件读取粘贴事件的clipboardData属性 .

我已经确定,在Chrome中,如果我听一下粘贴事件的文档对象,那么我在处理程序中传递的事件对象将包含clipboardData属性 . 我很惊讶地看到Firefox(v20)也是如此 .

这是我在我的CKEditor插件中使用的代码,虽然我不认为这只是一个与CKEditor相关的问题 . 在Chrome中我看到了clipboardData对象,在Firefox中我没有 .

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

我在MDN网站上看不到任何确认这是否支持的内容,我也相信IE10是为了支持这一点,但它是否可以在标准API上运行?

Edit:

我应该从一开始就明确这一点,但我正在尝试开发支持粘贴图像,所以我需要将剪贴板数据作为文件读取 .

4 回答

  • 3

    如果您想在粘贴事件中获取剪贴板数据,这些可以帮助您:

    W3C标准版(Chrome):

    event.clipboardData.getData(type)
    

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

    IE:

    window.clipboardData.getData(type)
    

    类型只能是"Text"或"URL":http://msdn.microsoft.com/en-us/library/ie/ms536436%28v=vs.85%29.aspx

    火狐:

    在ff中没有访问剪贴板的API . 如果你想实现它,你可以尝试其他方式,这取决于你想做什么 .

  • 1

    这确实只是一个CKEditor问题 . 问题是你在阅读基础Javascript事件 . 但是你错过了CKEditor为你开发的CKEditor层 .

    他们已经处理好了浏览器之间的差异 . 而你唯一需要做的事情是:

    var clipboardData = ev.data.dataValue
    
  • 1

    您应该在 paste 事件中使用剪贴板数据:

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

    您可以修改 event.data.dataValue 来操纵粘贴的内容 . 另请注意,优先级很重要,因为粘贴的数据是pre-processed during pasting phases . 因此,您可以通过指定数字侦听器优先级来在不同阶段对您的更改进行"inject":

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

    即,我们可以使用所有剪贴板API,而在chrome和firefox只能用于火贴事件 . 所以用户无法用户剪贴板api从网站复制的东西,而在办公室使用,msn ..

相关问题