当我在启用了'contentEditable'标志的任何元素中粘贴任何文本时,IE会自动查找超链接或电子邮件地址并用
替换它们<a href="hyperlink">hyperlink</a>.
如何在IE或aleast中使用'contentEditable'标志禁用元素(例如div,span等)的自动网址检测,获取粘贴在div中的实际文本。
最诚挚的问候,
Keshav
答案 0 :(得分:3)
不幸的是,没有跨版本的解决方案。 在IE9中有机会,允许禁用自动超链接:
document.execCommand("AutoUrlDetect", false, false);
答案 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;
});