Maison interface Web js tutoriel Solution pour ie 7/8 ne prenant pas en charge les compétences trim attribues_javascript

Solution pour ie 7/8 ne prenant pas en charge les compétences trim attribues_javascript

May 16, 2016 pm 04:47 PM
trim

Dans les navigateurs IE 7 et 8, si vous utilisez l'attribut trim() pour supprimer des espaces, une erreur sera signalée.

Il existe donc les solutions suivantes pour résoudre ce problème :

var aa = $("#id").val().trim() --- La méthode trim() ne peut pas être analysée dans IE

Solution :

[ var aa = $.trim($("#id").val()); Ce n'est pas facile à utiliser, utilisez donc celui présenté ci-dessous. Le premier a été testé.

Les têtes des gens du W3C ont été frappées par des ânes. Ce n'est qu'avec javascript1.8.1 que la fonction trim (avec trimLeft, trimRight) a été prise en charge. Malheureusement, seul Firefox3.5 la prend en charge désormais. Étant donné que la suppression des espaces des deux côtés d’une chaîne est si courante, on la trouve dans toutes les principales bibliothèques. De plus, les étrangers sont très énergiques dans la recherche et ont créé de nombreuses implémentations.

Réalisez 1 OK . (Écrivez ceci en js, puis suivez .trim() directement après la chaîne dans laquelle vous souhaitez supprimer les espaces)

Copier le code Le code est le suivant :

String.prototype.trim = function () {
renvoie ceci .replace(/^ss*/, '' ).replace(/ss*$/, '' );
}

Cela n'a pas l'air très bien. Il utilise deux remplacements réguliers. La vitesse réelle est incroyable, principalement en raison de l'optimisation interne du navigateur. Un exemple célèbre est l'épissage de chaînes. L'ajout direct est plus rapide que StringBuffer constitué de Array. La bibliothèque de classes base2 utilise cette implémentation.

Mise en œuvre 2

Copier le code Le code est le suivant :

String.prototype.trim = function () {
renvoie ceci .replace(/^s /, '' ).replace(/s $/, '' );
}

est très similaire à l'implémentation 1, mais légèrement plus lente, principalement parce qu'elle suppose d'abord qu'il y a au moins un caractère d'espacement. Prototype.js utilise cette implémentation, mais son nom est strip, car les méthodes de Prototype s'efforcent d'avoir le même nom que Ruby.

Atteindre 3

Copier le code Le code est le suivant :

String.prototype.trim = function () {
returnthis .substring(Math.max( this .search(/S/), 0), this .search(/Ss*$/) 1);
}

Obtenez la partie vierge par interception (bien sûr, les espaces sont autorisés au milieu), et un total de 4 méthodes natives sont appelées. La valeur par défaut est très intelligente, la sous-chaîne prend deux nombres comme paramètres. Math.max prend deux nombres comme paramètres et la recherche renvoie un nombre. La vitesse est un peu plus lente que les deux ci-dessus, mais plus rapide que la plupart de celles ci-dessous.

Atteindre 4

Copier le code Le code est le suivant :

String.prototype.trim = function () {
returnthis .replace(/^s |s $/g, '' );
}

Cela peut être appelé une version simplifiée de l'implémentation 2, qui utilise des opérateurs candidats pour connecter deux expressions régulières. Mais cela manquerait l’opportunité d’optimisation du navigateur, qui est inférieure à l’implémentation 3. Parce qu'il a l'air très élégant, de nombreuses bibliothèques l'utilisent, comme JQuery et mootools

Atteindre 5

Copier le code Le code est le suivant :

String.prototype.trim = function () {
var str = this ;
str = str.match(/S (?:s S )*/);
return str ? >

match renvoie un tableau, de sorte que les parties de la chaîne d'origine qui répondent aux exigences deviennent ses éléments. Afin d'éviter que les caractères d'espacement au milieu de la chaîne ne soient éliminés, nous devons utiliser un regroupement sans capture (?:exp). Le tableau étant peut-être vide, nous porterons d’autres jugements plus tard. Il semble que le navigateur soit relativement faible dans le traitement du regroupement et qu'un mot soit lent. Ne soyez donc pas superstitieux à propos de la régularité, même si elle est fondamentalement omnipotente.

Atteindre 6

String.prototype.trim = function () {
renvoie ceci .replace(/^s*(S*(s S )*)s*$/, '$1' );
}


Fournissez les pièces qui répondent aux exigences et placez-les dans une chaîne vide. Cependant, l’efficacité est très médiocre, notamment sous IE6.

Atteindre 7

String.prototype.trim = function () {
renvoie ceci .replace(/^s*(S*(?:s S )*)s*$/, '$1' );
}

Elle est très similaire à l'implémentation 6, mais utilise un regroupement sans capture pour en tirer parti, et l'efficacité des performances est légèrement améliorée.

Atteindre 8

Copier le code Le code est le suivant :

String.prototype.trim = function () {
renvoie ceci .replace(/^s*((?:[Ss]*S)?)s*$/, '$1' );
}

Amélioré selon les deux idées ci-dessus, en utilisant des groupes et des jeux de caractères non capturants, et en utilisant à la place de *. L'effet est incroyable. Surtout dans IE6, cette amélioration des performances peut être qualifiée de folle, tuant directement Firefox.

Mise en œuvre 9

Copier le code Le code est le suivant :

String.prototype.trim = function () {
renvoie ceci .replace(/^s*([Ss]*?)s*$/, '$1' );
}

Cette fois, la correspondance paresseuse est utilisée pour remplacer les groupes non capturants, ce qui a été amélioré dans Firefox, IE n'est pas aussi fou que la dernière fois.

Atteindre 10

Copier le code Le code est le suivant :

String.prototype.trim = function () {
var str = this ,
espace blanc = 'nrtfx0bxa0u2000u2001u2002u2003u2004u20 05u2006u2007u2008u2009u200au200bu2028u2029 u3000' ;
pour ( var i = 0 ,len = str.length; i = 0; i--) {
if ( whitespace.indexOf (str.charAt(i)) === -1) {
str = str.substring(0, i 1);
break ;
}
}
return whitespace.indexOf (str.charAt(0)) === -1 ? str : '' ;
}

Je veux juste dire que la personne qui a créé cela n'est plus décrite comme une vache, mais est déjà au niveau d'un dieu. Il répertorie d'abord tous les caractères d'espacement possibles, coupe l'espace de début lors du premier parcours et coupe l'espace suivant lors de la deuxième passe. L'ensemble du processus utilise uniquement indexOf et substring, qui sont des méthodes natives spécifiquement conçues pour le traitement des chaînes, et aucune règle régulière n'est utilisée. La vitesse est étonnamment rapide et devrait être aussi proche de celle de l'implémentation binaire interne, et offrira des performances exceptionnelles dans IE et Firefox (et d'autres navigateurs, bien sûr). La vitesse est de zéro milliseconde.

Atteindre 11

Copier le code Le code est le suivant :

String.prototype.trim = function () {
var str = this ,
str = str.replace(/^s /, '' );
for ( var i = str.length - 1; i >= 0; i-- ) {
if (/S/.test(str.charAt(i))) {
str = str.substring(0, i 1);
break ;
}
}
return str;
}

L'implémentation 10 nous a dit que la méthode ordinaire d'interception de chaînes inconnues est bien meilleure que le remplacement régulier, même si elle est un peu plus compliquée. Mais tant que l'expression régulière n'est pas trop compliquée, nous pouvons utiliser l'optimisation de l'expression régulière par le navigateur pour améliorer l'efficacité de l'exécution du programme et atteindre 8 performances dans IE. Je pense que généralement personne n'utilisera l'implémentation 10 dans ses projets, car l'implémentation des espaces est trop longue et difficile à retenir (bien sûr, si vous construisez une bibliothèque de classes, c'est certainement la première). L'implémentation 11 peut être considérée comme une version améliorée. L'espace blanc dans la partie avant est coupé par remplacement régulier, et cette dernière partie est traitée par des méthodes natives. L'effet n'est pas inférieur à la version originale, mais la vitesse est très. incroyable.

Atteindre 12

Copier le code Le code est le suivant :

String.prototype.trim = function () {
var str = this ,
str = str.replace(/^ss*/, '' ),
ws = /s/,
i = str.length;
while (ws. test(str.charAt(--i)));
return str.slice(0, i 1);
}

实现10与实现11在写法上更好的改进版,注意说的不是性能速度,而是易记与施用上。和它的两个先辈都是零毫秒级另外,以后就用这个来工作与吓人。

下面是老外给出的比力结果,执行背景是对Magna Carta 这文章(超过27,600字符)进行trim操作。

实现 Firefox 2 IE 6

trim1 15ms trim2 31ms trim3 46ms 31ms
trim4 47ms 46ms
trim5 156ms 1656ms
trim6 172ms 2406ms
trim7 172ms 1640ms
trim8 281ms trim9 125ms 78ms

trim10 trim11 trim12 trim函数实现揭晓自己的想法,想懂得原作者说什么请看原文。



JS去除空格的方法目前共有12种 :

实现1
String.prototype.trim = function() { return this.replace(/^ss*/, '' ).replace(/ss*$/, ''); }
实现2
String.prototype.trim = function() { return this.replace(/^s /, '').replace(/s $/, ''); }
实现3
String.prototype.trim = function() { return this.s string(Math.max(this.search(/S/), 0),this.search(/Ss*$/ ) 1); }
实现4
String.prototype.trim = function() { return this.replace(/^s |s $/g, ''); }
String.prototype.trim = function() { var str = this; str = str.match(/S (?:s S )*/); retourner str ? str[0] : ''; }
String.prototype.trim = function() { return this.replace(/^s*(S*(s S )*)s*$/, '$1'); }
实现7
String.prototype.trim = function() { return this.replace(/^s*(S*(?:s S )*)s*$/, '$1'); }
String.prototype.trim = function() { return this.replace(/^s*((?:[Ss]*S)?)s*$/, '$1'); }
String.prototype.trim = function() { return this.replace(/^s*([Ss]*?)s*$/, '$1'); }
String.prototype.trim = function() { var str = this, whitespace = 'nrtfx0bxa0??????????????? '; for (var i = 0,len = str.length; i < len; i ) { if (whitespace.indexOf(str.charAt(i)) === -1) { str = str.s string(i) ; casser; } } for (i = str.length - 1; i >= 0; i--) { if (whitespace.indexOf(str.charAt(i)) === -1) { str = str.s string( 0, je 1); casser; } } return whitespace.indexOf(str.charAt(0)) === -1 ? chaîne : ''; }
实现11
String.prototype.trim = function() { var str = this, str = str.replace(/^s /, ''); for (var i = str.length - 1; i >= 0; i--) { if (/S/.test(str.charAt(i))) { str = str.s string(0, i 1 ); casser; } } return str; }
实现12
String.prototype.trim = function() { var str = this, str = str.replace(/^ss*/, ''), ws = /s/, i = str. longueur; while (ws.test(str.charAt(--i))); return str.slice(0, i 1); }

看起来不怎么样, 动用了两次正则替换,实际速度非常惊人,主要得益于浏览器的内一个著名的例子字符串拼接,加比用Array做

和实现1 很相似,但稍慢一点,主要原因是它最先是假设至少存在一个空白符。Prototype.js使用

以截取方式取得空白部分(当然允许中间存在空白符),总共 调用了四个原生方法。Math.max以两个数字作参数,search则返回一个数字。速度比上 面两个慢一点,但比下面大多数都快。 这个可以称得上实现2的简化版,就是 利用候选操作符连接两个正则。但这样做就失去了浏览器优化的机会,比不上实现3。由于看来很优雅,许多类库都使用它,如JQ ry与mootools

实现5

match 是返回一个数组,因此原字符串符合要求的郄都分就成为它的元素。为了防止字符串中间的空白符被排除,我们需要动用到非捕获性分组(?:exp)。由于数组可 能为空,我们在后面还要做进一步的判定。好像浏览器在处理分组上比较无力,一个字虽然它基本上是万能的。

实现6

把符合要求的部分提供出来,放到一个空字符串中。不过效率很差,

和实现6很相似,但用了非捕获分组进行了优点,性能效之有一点点提升。

实现8

尤其IE6中,可 以用疯狂来形容这次性能的提升,直接秒杀火狐。

实现9

这次是用懒惰匹配 顶替非捕获分组,在火狐中得到改善,IE没有上次那么疯狂。

实现10

我 只想说,搞出这个的人已经不是用牛来形容,已是神一样的级别。它先是把可能的空白符全部列出来,在第一次遍历中砍掉前面的空白,第二次砍掉后面的空白。全 过程只用了indexOf与s string这个专门为处理字符串而生的原生方法,没有使用到正则。速度快得惊人,估计直逼上内部的二进制实现,并且在IE与火狐(其他浏览器当然也毫无疑问)都有良好的表现。速度都是零毫秒级别的。

实现10 jours de voyage替换,虽然是复杂一点。但只要正则 不过于复杂,我们就可以利用浏览器对正则的优化,改善程序执行效率,如实现8 et IE的表现。我想通常不会有人在项目中应用实现10 ,因为那个 whitespace 实现太长太难记了(当然如果你在打造一个类库,它绝对是首先)。L'implémentation 11 peut être considérée comme une version améliorée. Les blancs de la partie avant sont coupés par remplacement régulier, et cette dernière partie est traitée par des méthodes natives. L'effet n'est pas inférieur à la version originale, mais la vitesse est très incroyable. .

Implementation 10 et Implementation 11 sont des versions meilleures et améliorées en termes d'écriture. Notez qu'il ne s'agit pas de performances et de vitesse, mais de facilité de mémoire et d'utilisation. Ses deux prédécesseurs sont au niveau zéro milliseconde. Je l'utiliserai à l'avenir pour le travail et l'intimidation.
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Conseils pratiques : Comment utiliser la fonction trim en PHP pour traiter les espaces chinois Conseils pratiques : Comment utiliser la fonction trim en PHP pour traiter les espaces chinois Mar 27, 2024 am 11:27 AM

En programmation PHP, des espaces sont souvent rencontrés lors du traitement des chaînes, y compris les espaces chinois. Dans le développement réel, nous utilisons souvent la fonction trim pour supprimer les espaces aux deux extrémités d'une chaîne, mais le traitement des espaces chinois est relativement compliqué. Cet article explique comment utiliser la fonction trim en PHP pour traiter les espaces chinois et fournit des exemples de code spécifiques. Tout d’abord, comprenons les types d’espaces chinois. En chinois, les espaces comprennent non seulement les espaces anglais communs (espace), mais également d'autres espaces spéciaux.

Guide d'utilisation de la fonction trim() en PHP Guide d'utilisation de la fonction trim() en PHP Feb 20, 2024 am 08:39 AM

Guide d'utilisation de la fonction trim() en PHP La fonction trim() est très couramment utilisée en PHP et permet de supprimer les espaces ou autres caractères spécifiés au début et à la fin d'une chaîne. Cet article présentera en détail l’utilisation de la fonction trim() et fournira des exemples de code spécifiques. 1. Syntaxe de la fonction La syntaxe de la fonction trim() est la suivante : trim(string$str,string$character_mask=""):string Cette fonction accepte deux paramètres,

Utilisez la fonction strings.Trim pour supprimer le jeu de caractères spécifié du début et de la fin d'une chaîne Utilisez la fonction strings.Trim pour supprimer le jeu de caractères spécifié du début et de la fin d'une chaîne Jul 24, 2023 pm 04:27 PM

Utilisez la fonction strings.Trim pour supprimer le jeu de caractères spécifié au début et à la fin d'une chaîne. Dans le langage Go, la fonction strings.Trim est une fonction très pratique qui peut supprimer le jeu de caractères spécifié au début et à la fin d'une chaîne. chaîne, rendant la chaîne plus rangée et standardisée. Cet article explique comment utiliser la fonction strings.Trim et montre quelques exemples de code. Tout d’abord, jetons un coup d’œil au prototype de la fonction strings.Trim : funcTrim(sstring,cutsetstri

Quelle est la fonction de trim du disque SSD ? Quelle est la fonction de trim du disque SSD ? Nov 21, 2022 am 10:58 AM

La fonction de réglage du disque SSD consiste principalement à optimiser le disque SSD, à résoudre le problème de ralentissement et de durée de vie du SSD après utilisation et à améliorer l'efficacité du SSD en préparant les blocs de données pour la réutilisation. La fonction Trim est une fonction que possèdent presque tous les disques SSD. Il s'agit d'une commande ATA. Lorsque le système confirme que le SSD prend en charge Trim et supprime les données, il n'informe pas le disque dur de la commande de suppression et utilise uniquement le volume. Bitmap pour rappeler que les données ici ont été supprimées. Cela permet un traitement des données plus rapide.

Utilisez la fonction PHP 'trim' pour supprimer les caractères d'espacement aux deux extrémités d'une chaîne Utilisez la fonction PHP 'trim' pour supprimer les caractères d'espacement aux deux extrémités d'une chaîne Jul 25, 2023 pm 04:45 PM

La fonction PHP "trim" est une fonction de traitement de chaînes très utile. Cela peut nous aider à supprimer les espaces aux deux extrémités de la chaîne, y compris les espaces, les tabulations, les nouvelles lignes, etc. Lors de l'écriture de programmes PHP, nous rencontrons souvent des situations dans lesquelles les entrées utilisateur doivent être nettoyées. À l'heure actuelle, l'utilisation de "trim" peut garantir que nous obtenons une chaîne propre et évite les erreurs causées par des entrées utilisateur irrégulières. Voici un exemple de code simple montrant comment utiliser la fonction "trim" : &lt;?php

Comment activer et désactiver TRIM sur Windows 11 Comment activer et désactiver TRIM sur Windows 11 Sep 29, 2023 pm 03:13 PM

L'utilisation d'un disque SSD vous laisse avec le souci constant de perdre vos données et de ne pas pouvoir les récupérer. Cependant, Windows vous permet d'obtenir des performances optimales en exécutant des commandes TRIM qui écrivent uniquement les données nécessaires, sans avoir à gérer d'anciens blocs de données. Pour ce faire, vous devez vous assurer que votre SSD prend en charge TRIM et l'activer dans votre système d'exploitation. Comment vérifier si TRIM est activé ? Dans la plupart des cas, la fonctionnalité TRIM est activée par défaut sur les SSD modernes. Mais pour vous assurer que cela est vérifié, vous pouvez exécuter la commande avec des droits d'administrateur. Ouvrez simplement une invite de commande élevée, exécutez la commande fsutil behavioral query DisableDeleteNotify et votre SSD sera répertorié. 0 signifie activé, 1 signifie désactivé. comme

Tutoriel PHP : Apprenez à utiliser la fonction trim pour supprimer les espaces chinois Tutoriel PHP : Apprenez à utiliser la fonction trim pour supprimer les espaces chinois Mar 27, 2024 am 11:00 AM

Tutoriel PHP : Apprenez à utiliser la fonction trim pour supprimer les espaces chinois, vous avez besoin d'exemples de code spécifiques. Dans le développement PHP, vous rencontrez souvent des situations où vous devez traiter des chaînes, et l'une des exigences courantes est de supprimer les espaces aux deux extrémités. chaîne. Lors du traitement de chaînes anglaises, nous pouvons utiliser directement la fonction trim intégrée de PHP pour réaliser cette opération. Cependant, lorsque la chaîne contient des caractères chinois, la fonction trim peut ne pas être en mesure de supprimer normalement les espaces chinois. méthode nécessaire pour répondre à nos besoins. Cet article présentera

Comment utiliser trim en Java Comment utiliser trim en Java May 02, 2023 pm 01:31 PM

1. Expliquez que trim() est la méthode la plus couramment utilisée par les développeurs Java pour supprimer les espaces de début et de fin. Pour la méthode trim(), un caractère espace est tout caractère ayant une valeur ASCII inférieure ou égale à 32('U+0020')*. La méthode trim() renvoie une copie de l'objet chaîne appelant, mais avec tous les débuts et fins supprimés. 2. Instance publicclassFunTester{publicstaticvoidmain(String[]args){Stringstring="onetwotrois";System.out.prin

See all articles