6

当我在启用了“contentEditable”标志的任何元素中粘贴任何文本时,IE 会自动找到超链接或电子邮件地址并将其替换为

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

如何在 IE 中禁用带有“contentEditable”标志的元素(例如 div、span 等)的自动 url 检测,或者至少获取粘贴在 div 中的实际文本。

最好的问候,
凯沙夫

4

4 回答 4

4

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

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

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

于 2011-09-27T12:17:03.763 回答
1

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

编辑 2012 年 9 月 30 日

IE 9 及更高版本可以关闭此功能。请参阅 Maxon 的答案。

于 2010-08-19T08:02:59.533 回答
0

我在空格键、回车键、制表键的 keydown 事件上使用 preventDefault 来防止 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;
});
于 2017-04-07T14:43:11.927 回答
0

It seems that it works for Chrome: Hold Ctrl+Alt to disable the links temporarily. This extension disables links when you hold Ctrl+Alt. This allows to select text from the middle of the link, and generally eases selection, eliminating the risk to click the link while copying it.

于 2021-12-21T21:38:07.330 回答