2010-08-19 16 views
5

में 'contenteditable' ध्वज के साथ तत्वों के लिए जब मैं के साथ किसी भी तत्व का कोई भी टेक्स्ट पेस्ट अक्षम स्वत: यूआरएल पता लगाने 'contenteditable' ध्वज सक्षम, IE स्वचालित रूप से हाइपरलिंक या ईमेल पते पाता है और उन लोगों के साथ की जगहआईई

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

मैं IE में 'contentEditable' ध्वज के साथ तत्वों (उदाहरण के लिए div, span आदि) के लिए इस स्वचालित यूआरएल पहचान को अक्षम कैसे कर सकता हूं या कम से कम वास्तविक पाठ को div में चिपकाया गया है।

शुभकामनाओं सहित,
केशव

उत्तर

1

मुझे नहीं लगता कि आप कर सकते हैं। आपको paste ईवेंट को पकड़ने की आवश्यकता होगी और एक संक्षिप्त टाइमर सेट करें जो लिंक को हटा देता है।

संपादित 30 सितंबर 2012

आईई 9 और ऊपर इस बंद करने की क्षमता है। मैक्सन का जवाब देखें।

3

दुर्भाग्य से, कोई क्रॉस-वर्जन समाधान नहीं है। IE9 में वहाँ अवसर है, स्वत: हाइपरलिंकिंग निष्क्रिय करने के लिए अनुमति देता है:

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

अधिक जानकारी: http://msdn.microsoft.com, http://bytes.com

+2

यह IE11 – jreptak

+0

पर काम नहीं कर रहा है IE11 में काम नहीं करने की पुष्टि – Artif3x

0

मैं अंतरिक्ष कुंजी पर preventDefault का उपयोग करें, यूआरएल का पता लगाने को रोकने के लिए कुंजी, टैब कुंजी के keydown घटना दर्ज करें। आईई 11 और क्रोम पर परीक्षण किया गया।

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; 
});