2010-08-25 97 views
1

我一直在拉我的头发,试图找出解决此问题的最佳方法。也许有人会喜欢这个。CTRL-A在Firefox中的contentEditable div中选择div本身

我有一个div contentEditable =“true”,几乎可以正常工作。 Firefox内部的一个例外是用户使用CTRL-A选择所有内容然后复制/粘贴。选择操作包括div本身的标签!就我能够搜索的情况而言,这个漏洞应该由Mozilla修复,但事实并非如此。该div只是不断粘贴在自己的内部。

我已经研究过一旦用户复制了剪贴板,但Firefox似乎并不太友好,除非您使用闪存,这不是很理想。我还想过在另一端捕捉有问题的标签,当用户进行粘贴时,但粘贴事件会在JavaScript事件处理程序完成后将实际文本放入div中。有没有办法在发生粘贴之前编辑文本?

+0

不知道这是否可以工作,但不能在div上尝试onchange =“checkfordivs()”,其中checkfordiv是在div内容被更改后启动的JS函数? – 2010-08-25 19:26:19

回答

2

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

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