2010-08-19 32 views
5

与“CONTENTEDITABLE”标志元素时,我粘贴在任何元素文本“CONTENTEDITABLE”启用标志,IE会自动查找链接或电子邮件地址,并用其替换禁用自动URL检测在IE

<a href="hyperlink">hyperlink</a>. 

我如何禁用IE浏览器中的'contentEditable'标志的元素(例如div,span等)的自动URL检测或aleast获取粘贴在div中的实际文本。

最好的问候,
凯沙夫

回答

1

我不认为你可以。您需要捕获paste事件并设置一个简短的计时器,该计时器调用一个可删除链接的函数。

编辑2012年9月30日

IE 9和上述具有切换这一关的能力。见Maxon的答案。

3

不幸的是,没有跨版本的解决方案。 在IE9有机会,允许禁用自动超链接:

document.execCommand("AutoUrlDetect", false, false); 

更多信息:http://msdn.microsoft.comhttp://bytes.com

+2

这似乎不适用于IE11 – jreptak 2013-11-11 19:04:34

+0

已确认无法在IE11中正常工作 – Artif3x 2016-12-15 21:16:37

0

我用的preventDefault上空格键,回车键,tab键的keydown事件来防止URL检测。测试IE11和Chrome。

document.getElementById("input").addEventListener("keydown", function (e) { 
    var SPACEKEY = 32; 
    var ENTERKEY = 13; 
    var TABKEY = 9; 

    var whiteSpace = ""; 

    if (e.keyCode == SPACEKEY || e.keyCode == ENTERKEY || e.keyCode == TABKEY) { 
    e.preventDefault(); 

    if (e.keyCode == SPACEKEY) { 
     whiteSpace = " "; 
    } else if (e.keyCode == ENTERKEY) { 
     whiteSpace = "\n"; 
    } else if (e.keyCode == TABKEY) { 
     whiteSpace = "\t"; 
    } 

    var selection = document.getSelection(); 
    var start = selection.anchorOffset > selection.focusOffset ? selection.focusOffset : selection.anchorOffset; 
    var end = selection.anchorOffset > selection.focusOffset ? selection.anchorOffset : selection.focusOffset; 

    $(this).text($(this).text().substring(0, start) 
     + " " 
     + $(this).text().substring(end)); 
    var range = document.createRange(); 
    range.setStart($(this)[0].firstChild, start + 1); 
    range.setEnd($(this)[0].firstChild, start + 1); 
    selection.removeAllRanges(); 
    selection.addRange(range); 
    } 
    return false; 
});