2010-08-19 10 views
5

Cuando i pegar cualquier texto en cualquier elemento con 'contentEditable' flag está activado, IE encuentra automáticamente los hipervínculos o dirección de correo electrónico y los reemplaza condesactivar la detección automática de URL para elementos con la bandera 'contentEditable' en IE

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

¿Cómo puedo desactivar esta detección automática de url para los elementos (por ejemplo, div, span, etc.) con el indicador 'contentEditable' en IE o, al menos, obtener el texto real que se pegó en el div.

Best Regards,
Keshav

Respuesta

1

No creo que puedas. Necesitará capturar el evento paste y establecer un breve temporizador que invoque una función que elimine enlaces.

edición de septiembre de 2012 30 de

IE 9 y superior tiene la capacidad de cambiar esto. Ver la respuesta de Maxon.

3

Desafortunadamente, no hay una solución de versión cruzada. En IE9 hay oportunidad, lo que permite desactivar los hipervínculos automáticos:

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

Más información: http://msdn.microsoft.com, http://bytes.com

+2

Esto no parece funcionar en IE11 – jreptak

+0

Confirmado para no funcionar en IE11 – Artif3x

0

utilizo preventDefault en la tecla de espacio, introduzca evento KeyDown clave, de tecla de tabulación para evitar la detección de URL. Probado en IE11 y 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; 
}); 
Cuestiones relacionadas