11
votes

Est "Supprimer" un mot-clé réservé dans Google Chrome?

J'ai un problème intéressant, et je pense que je suis arrivé à la racine de cela, mais je voulais être sûr. J'ai un lien qui appelle une fonction appelée supprimer (). Tous les navigateurs sauf chrome n'ont eu aucun problème avec la fonction. Cependant, le lien qui clique sur a disparu en chrome, même lorsque j'ai simplifié la fonction comme dans l'exemple ci-dessous. J'ai vu cette question: Ne peut pas utiliser "Télécharger" comme Un nom de la fonction en JavaScript . Dans les liens, cependant, je n'ai rien vu sur "Supprimer" en tant que mot-clé réservé. Ma question est la suivante: je suis correct à ce sujet être un mot clé? Si oui, y a-t-il lieu où je peux trouver une liste de mots-clés Google? J'ai cherché et j'ai trouvé que ceci soit un problème nulle part ailleurs.

function remove(){
 alert("Hi");
}


10 commentaires

Je suis capable de l'utiliser de la console


Oui, aussi des mots comme statut


Je pense que tu as raison - regardez: ProductForums.Google .com / Forum /? Fromgroups = #! Sujet / Chrome / ...


Essayez Status = {} donnera une valeur de chaîne "[objet d'objet]"


Vous pouvez voir que supprimer est membre d'éléments d'ancrage dans chrome: var anch = document.createelement ("a"); console.log (anch.remove);


Merci gars, c'est assez utile. @Andrift, ce lien aide l'aide, j'allais marquer le vôtre comme réponse.


Je sousmé ma réponse - Marquez quiconque a aidé le plus :)


@Arun, merci, je vais essayer que si je rencontre quelque chose comme ça.


@Asillers Où puis-je voir ça? Je ne suis pas très familier avec Chrome.


@illinoistim Tirez sur la console avec Ctrl + Shift + J . Vous pouvez taper le code là-bas et voir la sortie des appels vers console.log .


3 Réponses :


1
votes

Je n'avais eu aucune question en chrome en l'utilisant, pas de cette manière xxx

sur JSFIDDLE

Inline JavaScript est considérée comme une mauvaise pratique.

Si vous avez plus d'éléments utilisant la même fonction, ajoutez simplement plus de lignes, comme celle-ci xxx

ou vous pouvez obtenir une nodéliste et une boucle à travers ce xxx

Vous pouvez regarder un autre Répondez ici sur SO Pour en savoir plus sur les différences entre les méthodes de liaison des événements, faites aussi un peu un peu de recherche sur le sujet vous donnera plus d'informations. Et bien sûr, vous auriez évité la question que vous viviez en le faisant de cette manière.


2 commentaires

Pouvez-vous expliquer davantage pourquoi il vaut mieux utiliser l'AddeventListener? Que dois-je faire s'il y a plus d'une référence à la fonction Supprimer?


J'espère que c'est assez d'informations pour répondre à votre nouvelle question, mais je vois que vous avez déjà choisi une réponse que vous étiez satisfaite.



8
votes

éléments en chrome ont un .remove () code> méthode permettant l'auto-retrait d'un élément au lieu de devoir le faire du parent.

Le problème est que lorsque vous utilisez des gestionnaires d'attributs , vous obtenez une autre chaîne d'étendue. Cette chaîne d'application comprend l'élément lui-même, ainsi que le document code>. Cela signifie que toutes les propriétés de l'élément et document code> apparaissent comme variables. P>

parce que vous avez nommé votre fonction supprimer () code>, et parce que c'est un global Fonction / variable, il est en train d'être ombragé par le .remove code> Propriété (maintenant variable) em> sur l'élément lui-même. Cela peut être vu avec une alerte. Si vous changez de votre gestionnaire à: p> xxx pré>

... vous obtiendrez quelque chose comme: p> xxx pré>

donc ce n'est donc pas que c'est réservé, mais plutôt qu'il est utilisé comme une propriété qui finit par nuire au global. p>


Pour le réparer, utilisez directement le global: p>

onclick="window.remove()"


2 commentaires

Grande explication, merci. Je vais simplement changer le nom de la fonction.


Je voulais juste noter .remove () n'est pas simplement un élément de propriété chrome éléments ont - c'est une partie de la nouvelle spécification :)



1
votes

Je ne trouve aucune documentation à ce sujet, mais les éléments DOM de Chrome ont une méthode natale supprimer qui les supprime apparemment. Dans onclick , Ce fait référence à l'élément lui-même, il finit donc à appeler this.remove () qui supprime l'élément. Pour contourner cela, vous pouvez simplement appeler window.remove () à la place.

http://jsfiddle.net/3ykzh/1/

Il serait également préférable d'utiliser la liaison d'événements standard via AddeventListener qui n'a pas ce problème lorsque vous appelez simplement supprimer :

http://jsfiddle.net/3ykzh/2/


1 commentaires

C'est une partie de la spécification DOM :) DOM.SPEC.WHATWG.ORG/#DOM -Childnode-supprimer assez neuf aussi.