st7*_*t78 18 javascript clipboard
我需要实现RichTextEditors非常常见的任务 - 从剪贴板中获取HTML.任何人都可以帮助指导如何解决这个任务?
它必须是跨平台(IE,FF,Chrome,Opera).我刚从这段代码开始:
<script type="text/javascript">
$('.historyText').live('input paste', function(e) {
var paste = e.clipboardData && e.clipboardData.getData ?
e.clipboardData.getData('text/plain') : // Standard
window.clipboardData && window.clipboardData.getData ?
window.clipboardData.getData('Text') : // MS
false;
alert(paste);
});</script>
Run Code Online (Sandbox Code Playgroud)
window.clipboardData和e.clipboardData都为null(Chrome,Firefox).
更新:用户想要粘贴其他浏览器窗口中的文章内容,我需要获取html标签.
Ric*_*rtz 21
我实际上已经做了很多工作,并写了一篇很好的博客文章,描述了我们如何在Lucidchart中详细说明(作为免责声明,我在Lucidchart工作).我们有一个JSFiddle,显示复制和粘贴(在Firefox,Safari,Chrome和IE9 +中测试).
缺点是您需要在系统粘贴事件期间获取HTML.在大多数(非IE)浏览器中,这可以通过以下简单的操作来完成:
document.addEventListener('paste', function(e) {
var html = e.clipboardData.getData('text/html');
// Whatever you want to do with the html
}
Run Code Online (Sandbox Code Playgroud)
问题是当你想在IE中获取HTML时.无论出于何种原因,IE都不会通过javascript访问text/html剪贴板数据.你需要做的是让浏览器粘贴到一个可信的div,然后在粘贴事件结束后获取html.
<div id="ie-clipboard-contenteditable" class="hidden" contenteditable="true"></div>
Run Code Online (Sandbox Code Playgroud)
var ieClipboardDiv = $('#ie-clipboard-contenteditable');
var focusIeClipboardDiv = function() {
ieClipboardDiv.focus();
var range = document.createRange();
range.selectNodeContents((ieClipboardDiv.get(0)));
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
};
document.addEventListener('beforepaste', function() {
if (hiddenInput.is(':focus')) {
focusIeClipboardDiv();
}
}, true);
document.addEventListener('paste', function(e) {
ieClipboardDiv.empty();
setTimeout(function() {
var html = ieClipboardDiv.html();
// Do whatever you want with the html
ieClipboardDiv.empty();
// Return focus here
}, 0);
}
Run Code Online (Sandbox Code Playgroud)
Tim*_*own 10
您将无法仅使用JavaScript从剪贴板获取数据,这应该是这样的.当前版本的TinyMCE和CKEditor的做法如下:
请注意,这仅适用于键盘粘贴事件,而不适用于上下文或编辑菜单中的粘贴.当粘贴事件触发时,将插入符重定向到div中已经太晚了(至少在某些浏览器中).
| 归档时间: |
|
| 查看次数: |
20232 次 |
| 最近记录: |