【问题标题】:Disable Automatic URL detection for Elements with 'contentEditable' flag in IE禁用 IE 中带有“contentEditable”标志的元素的自动 URL 检测
【发布时间】:2011-03-31 23:38:19
【问题描述】:
当我在启用了“contentEditable”标志的任何元素中粘贴任何文本时,IE 会自动查找超链接或电子邮件地址并将其替换为
<a href="hyperlink">hyperlink</a>.
如何在 IE 中禁用带有“contentEditable”标志的元素(例如 div、span 等)的自动 url 检测,或者至少获取粘贴在 div 中的实际文本。
最好的问候,
凯沙夫
【问题讨论】:
标签:
javascript
html
internet-explorer
contenteditable
【解决方案2】:
我不认为你可以。您需要捕获paste 事件并设置一个简短的计时器来调用删除链接的函数。
2012 年 9 月 30 日编辑
IE 9 及更高版本可以关闭此功能。请参阅 Maxon 的答案。
【解决方案3】:
我在空格键、回车键、制表键的 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;
});
【解决方案4】:
它似乎适用于 Chrome:按住 Ctrl+Alt 可暂时禁用链接。当您按住 Ctrl+Alt 时,此扩展会禁用链接。这允许从链接中间选择文本,并且通常可以简化选择,消除在复制链接时单击链接的风险。