1

我一直在努力寻找解决这个问题的最佳方法。也许有人会从中获得乐趣。

我有一个 contentEditable="true" 的 div,它几乎适用于所有东西。当用户使用 CTRL-A 选择所有内容然后复制/粘贴时,Firefox 内部是一个例外。选择操作包括 div 本身的标签!据我搜索,这个错误应该是由 Mozilla 修复的,但事实并非如此。div 只是不断地粘贴在自身内部。

一旦用户复制了剪贴板,我就考虑对其进行编辑,但是除非您使用 Flash,否则 Firefox 似乎对此不太友好,这不是很理想。当用户进行粘贴时,我还考虑在另一端捕获有问题的标签,但粘贴事件在任何 javascript 事件处理程序完成后将实际文本放入 div 中。有没有办法在粘贴文本发生之前对其进行编辑?

4

1 回答 1

2

其实是火狐浏览器的问题。你可以使用下面的函数来解决这个问题。

function disableCtrlKeyCombination(event){
    var keyCode = event.keyCode;
    if (event.ctrlKey && keyCode==86) { //CTRL+V 
        event.preventDefault();
        document.getElementById("divId").textContent = system.getClipboard().getData("text");
        return false;
    } else if (event.ctrlKey && keyCode==67) { //CTRL+C (Copy)
        event.preventDefault();
        system.getClipboard().setData("text",document.getElementById("divId").textContent);
        return false;
    } else {
        return true;
    }
}

注意:这仅适用于 Firefox。在其他浏览器中,它默认工作正常。

于 2011-03-10T14:13:54.370 回答