在IE中禁用带有“contentEditable”标志的Elements的自动URL检测

时间:2010-08-19 07:34:54

标签: javascript html internet-explorer contenteditable

当我在启用了'contentEditable'标志的任何元素中粘贴任何文本时,IE会自动查找超链接或电子邮件地址并用

替换它们
<a href="hyperlink">hyperlink</a>.

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

最诚挚的问候,
Keshav

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

编辑2012年9月30日

IE 9及更高版本可以关闭它。见马克森的答案。

答案 2 :(得分:0)

我在空格键上使用preventDefault,输入key,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;
});