2010-08-19 13 views
5

Khi tôi dán bất kỳ văn bản trong bất kỳ yếu tố với 'contentEditable' cờ kích hoạt, IE tự động tìm kiếm các siêu liên kết hoặc địa chỉ email và thay thế chúng bằngphát hiện Disable URL tự động cho Elements với cờ 'contentEditable' trong IE

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

Làm thế nào tôi có thể vô hiệu hóa phát hiện url tự động này cho các phần tử (ví dụ div, span, vv) với cờ 'contentEditable' trong IE hoặc aleast nhận được văn bản thực tế được dán trong div.

Best Regards,
Keshav

Trả lời

1

Tôi không nghĩ rằng bạn có thể. Bạn sẽ cần nắm bắt sự kiện paste và đặt một bộ hẹn giờ ngắn gọn gọi một hàm xóa liên kết.

Chỉnh sửa ngày 30 tháng chín năm 2012

IE 9 trở lên có khả năng tắt cài đặt này. Xem câu trả lời của Maxon.

3

Thật không may, không có giải pháp phiên bản chéo. Trong IE9 có cơ hội, cho phép vô hiệu hóa siêu liên kết tự động:

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

Thông tin thêm: http://msdn.microsoft.com, http://bytes.com

+2

Điều này dường như không hoạt động trên IE11 – jreptak

+0

Xác nhận không hoạt động trong IE11 – Artif3x

0

tôi sử dụng preventDefault trên phím space, nhấn phím enter, sự kiện KeyDown phím tab để ngăn chặn phát hiện URL. Đã thử nghiệm trên IE11 và 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; 
}); 
Các vấn đề liên quan