相关疑难解决方法(0)

JavaScript在粘贴事件上获取剪贴板数据(跨浏览器)

Web应用程序如何检测粘贴事件并检索要粘贴的数据?

我想在将文本粘贴到富文本编辑器之前删除HTML内容.

之后粘贴后清理文本有效,但问题是所有以前的格式都丢失了.例如,我可以在编辑器中编写一个句子并将其设为粗体,但是当我粘贴新文本时,所有格式都会丢失.我想只清理粘贴的文本,并保持以前的格式不变.

理想情况下,该解决方案应适用于所有现代浏览器(例如,MSIE,Gecko,Chrome和Safari).

请注意,MSIE有clipboardData.getData(),但我找不到其他浏览器的类似功能.

javascript clipboard cross-browser

281
推荐指数
10
解决办法
33万
查看次数

从IE中的剪贴板获取html

我想在富文本编辑器(tinymce)中复制/粘贴图像.在Chrome中,我使用以下代码来获取图像并且效果很好,

event.clipboardData.getData('text/html')
Run Code Online (Sandbox Code Playgroud)

但在IE11中,使用以下代码将破坏功能,

window.clipboardData.getData('text/html')
Run Code Online (Sandbox Code Playgroud)

我只能使用以下代码从剪贴板获取图像名称,

window.clipboardData.getData('Text')
Run Code Online (Sandbox Code Playgroud)

如何从IE11中的剪贴板中复制图像?

javascript clipboard internet-explorer tinymce

7
推荐指数
0
解决办法
654
查看次数

event.clipboardData.getData在Safari中没有text/html

在我们的应用程序中,我们处理粘贴的内容,然后将其插入到可信的div中.在Firefox和Chrome中,粘贴event.clipboardData.getData有两个键text/plain和text/html.在Safari中,它有大约12个键,范围从文本到RTF,但不包括用户粘贴在其中任何一个中的HTML.如何从粘贴事件中访问它?

$( 'div' ).on( 'paste', function( aEvent ) {
    var evt = aEvent.originalEvent;
    var text = evt.clipboardData.getData( 'text/plain' );
    var html = evt.clipboardData.getData( 'text/html' );
    var i, len;

    console.log( 'text=' + text );
    console.log( 'html=' + html );

    console.log( 'data types=' );
    console.log( evt.clipboardData.types );

    for ( i = 0, len = evt.clipboardData.types.length; i < len; i++ ) {
        console.log( evt.clipboardData.types[ i ] + '=' + evt.clipboardData.getData( evt.clipboardData.types[ i ] ) );
    }
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/njLxk9cw/

突出显示两个段落,复制它们,然后粘贴到新行并观察控制台.

[编辑]如果我从复制事件中使用Rangy的range.toHtml,我可以保存所选内容的快照.在粘贴事件中,我首先检查剪贴板,然后检查我保存的片段,然后回退到文本.理想情况下,我希望尽可能让剪贴板API工作.

javascript safari

6
推荐指数
0
解决办法
2181
查看次数