【问题标题】:CTRL-A inside a contentEditable div in Firefox selects the div itselfFirefox 中 contentEditable div 中的 CTRL-A 选择 div 本身
【发布时间】:2010-08-25 19:19:03
【问题描述】:

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

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

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

【问题讨论】:

  • 不确定这是否可行,但你不能在 div 上尝试 onchange="checkfordivs()" ,其中 checkfordiv 是在 div 的内容被启动后启动的 JS 函数改了?

标签: html firefox copy-paste contenteditable


【解决方案1】:

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

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。在其他浏览器中,默认情况下它可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 2016-04-11
    • 2011-04-15
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    相关资源
    最近更新 更多