javascript internet-explorer trim

.trim() en JavaScript no funciona en IE



internet-explorer (14)

Acabo de descubrir que IE deja de admitir trim() , probablemente después de una actualización reciente de Windows. Si usas dojo, puedes usar dojo.string.trim() , funciona multiplataforma.

Intenté aplicar .trim() a una cadena en uno de mis programas de JavaScript. Está funcionando bien en Mozilla, pero aparece un error cuando lo intento en IE8. ¿Alguien sabe qué está pasando aquí? ¿Hay alguna forma de hacerlo funcionar en IE?

código:

var ID = document.getElementByID(''rep_id'').value.trim();

pantalla de error:

Message: Object doesn''t support this property or method Line: 604 Char: 2 Code: 0 URI: http://test.localhost/test.js


Agregue el siguiente código para agregar funcionalidad de recorte a la cadena.

if(typeof String.prototype.trim !== ''function'') { String.prototype.trim = function() { return this.replace(/^/s+|/s+$/g, ''''); } }


Desafortunadamente, no hay soporte de JavaScript de navegador cruzado para trim ().

Si no está usando jQuery (que tiene un método .trim ()), puede usar los siguientes métodos para agregar soporte de recorte a las cadenas:

String.prototype.trim = function() { return this.replace(/^/s+|/s+$/g,""); } String.prototype.ltrim = function() { return this.replace(/^/s+/,""); } String.prototype.rtrim = function() { return this.replace(//s+$/,""); }


Este problema puede deberse a que IE utiliza el modo de compatibilidad en sitios de intranet. Hay dos maneras de resolver esto: puede actualizar IE para que no use el modo de compatibilidad en su máquina local (en IE11: Herramientas-> Configuración de vista de compatibilidad -> Desmarque Mostrar sitios de intranet en Vista de compatibilidad)

Mejor aún, puedes actualizar las etiquetas meta en tu página web. Añadir:

... <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> </head> ...

¿Qué significa esto? Le está diciendo a IE que use el último modo de compatibilidad. Más información está disponible en MSDN: Especificación de modos de documentos heredados


Esto es debido a error tipográfico getElementBy ID . Cámbiala a getElementById


He escrito algún código para implementar la funcionalidad de recorte.

LTRIM (recortar a la izquierda):

function ltrim(s) { var l=0; while(l < s.length && s[l] == '' '') { l++; } return s.substring(l, s.length); }

RTRIM (recortar a la derecha):

function rtrim(s) { var r=s.length -1; while(r > 0 && s[r] == '' '') { r-=1; } return s.substring(0, r+1); }

TRIM (recortar ambos lados):

function trim(s) { return rtrim(ltrim(s)); }

O

Expresión regular también está disponible que podemos usar.

function trimStr(str) { return str.replace(/^/s+|/s+$/g, ''''); }

Explicación útil




Podemos obtener el código oficial de internet! Consulte esto:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim

Ejecutar el siguiente código antes de cualquier otro código creará trim () si no está disponible de forma nativa.

if (!String.prototype.trim) { (function() { // Make sure we trim BOM and NBSP var rtrim = /^[/s/uFEFF/xA0]+|[/s/uFEFF/xA0]+$/g; String.prototype.trim = function() { return this.replace(rtrim, ''''); }; })(); }

Para más: acabo de encontrar que hay un proyecto js para admitir EcmaScript 5: https://github.com/es-shims/es5-shim mediante la lectura del código fuente, podemos obtener más información sobre el recorte.

defineProperties(StringPrototype, { // http://blog.stevenlevithan.com/archives/faster-trim-javascript // http://perfectionkills.com/whitespace-deviations/ trim: function trim() { if (typeof this === ''undefined'' || this === null) { throw new TypeError("can''t convert " + this + '' to object''); } return String(this).replace(trimBeginRegexp, '''').replace(trimEndRegexp, ''''); } }, hasTrimWhitespaceBug);


Tuve el mismo problema en IE9. Sin embargo, cuando declaré la versión html compatible con la siguiente etiqueta en la primera línea antes de

<!DOCTYPE html> <HTML> <HEAD>... . .

El problema fue resuelto.


Tuve un problema similar al intentar recortar un valor de una entrada y luego preguntar si era igual a nada:

if ($(this).val().trim() == "")

Sin embargo, esto arrojó una llave en el trabajo para IE6-8. Lo suficientemente molesto como para intentarlo de esta manera:

var originalValue = $(this).val();

Sin embargo, el uso del método trim de jQuery funciona perfectamente para mí en todos los navegadores ...

var originalValueTrimmed = $.trim($(this).val()); if (originalValueTrimmed == "") { ... }


jQuery:

$.trim( $("#mycomment").val() );

Alguien usa $("#mycomment").val().trim(); pero esto no funcionará en IE.



var res = function(str){ var ob; var oe; for(var i = 0; i < str.length; i++){ if(str.charAt(i) != " " && ob == undefined){ob = i;} if(str.charAt(i) != " "){oe = i;} } return str.substring(ob,oe+1); }