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"); }
3 Réponses :
Je n'avais eu aucune question en chrome en l'utilisant, pas de cette manière sur JSFIDDLE P> Inline JavaScript est considérée comme une mauvaise pratique. p> Si vous avez plus d'éléments utilisant la même fonction, ajoutez simplement plus de lignes, comme celle-ci P > ou vous pouvez obtenir une nodéliste et une boucle à travers ce p> 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. P> p>
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.
éléments en chrome ont un 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 parce que vous avez nommé votre fonction ... vous obtiendrez quelque chose comme: p> 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> .remove () code> méthode permettant l'auto-retrait d'un élément au lieu de devoir le faire du parent.
code>. Cela signifie que toutes les propriétés de l'élément et
document code> apparaissent comme variables. P>
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>
onclick="window.remove()"
Grande explication, merci. Je vais simplement changer le nom de la fonction.
Je voulais juste noter .remove () code> n'est pas simplement un élément de propriété chrome éléments ont - c'est une partie de la nouvelle spécification :)
Je ne trouve aucune documentation à ce sujet, mais les éléments DOM de Chrome ont une méthode natale http://jsfiddle.net/3ykzh/1/ p>
Il serait également préférable d'utiliser la liaison d'événements standard via supprimer code> qui les supprime apparemment. Dans
onclick code>,
Ce code> fait référence à l'élément lui-même, il finit donc à appeler
this.remove () code> qui supprime l'élément. Pour contourner cela, vous pouvez simplement appeler
window.remove () code> à la place. P>
AddeventListener code> qui n'a pas ce problème lorsque vous appelez simplement
supprimer code>: p>
C'est une partie de la spécification DOM :) DOM.SPEC.WHATWG.ORG/#DOM -Childnode-supprimer assez neuf aussi.
Je suis capable de l'utiliser de la console
Oui, aussi des mots comme
statut code>
Je pense que tu as raison - regardez: ProductForums.Google .com / Forum /? Fromgroups = #! Sujet / Chrome / ...
Essayez
Status = {} code> donnera une valeur de chaîne
"[objet d'objet]" code>
Vous pouvez voir que
supprimer code> est membre d'éléments d'ancrage dans chrome:
var anch = document.createelement ("a"); console.log (anch.remove); code>
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 code>. Vous pouvez taper le code là-bas et voir la sortie des appels vers
console.log code>.