2010-08-19 3 views
5

Quand je coller du texte dans un élément avec le drapeau « contentEditable » est activé, IE détecte automatiquement les liens hypertexte ou adresse e-mail et les remplace parDésactiver la détection automatique URL pour les éléments avec le drapeau « contentEditable » dans IE

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

Comment puis-je désactiver cette détection automatique d'URL pour les éléments (par exemple, div, span etc.) avec le drapeau 'contentEditable' dans IE ou au moins obtenir le texte réel qui a été collé dans la div.

Cordialement,
Keshav

Répondre

1

Je ne pense pas que vous pouvez. Vous aurez besoin d'attraper l'événement paste et de définir une brève minuterie qui appelle une fonction qui supprime les liens.

Modifier 30 Septembre 2012

IE 9 et a surtout la possibilité de désactiver cette. Voir la réponse de Maxon.

3

Malheureusement, il n'existe pas de solution inter-version. En IE9 il y a possibilité, ce qui permet de désactiver le changement automatique hyperlinking:

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

Plus d'informations: http://msdn.microsoft.com, http://bytes.com

+2

Cela ne semble pas fonctionner sur IE11 – jreptak

+0

confirmé ne pas travailler dans IE11 – Artif3x

0

J'utilise preventDefault sur la barre d'espace, entrez événement clé, keydown de touche de tabulation pour empêcher la détection d'URL. Testé sur IE11 et 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; 
}); 
Questions connexes