Je ne sais pas si c'est une chose bien connue ou quelque chose de nouveau dans n'importe quelle version de Firefox, mais elle s'est juste mise à jour aussi - mais dans les deux cas je ne sais pas comment google pour cette question, donc je vais devoir le demander ici.Doctype strict empêchant l'accès à la variable DOM dans FireFox
J'ai un DIV dans mon DOM que je suis en train d'accéder directement par identifiant, sous la forme la plus simple comme ceci:
alert(btnTest.id);
Cela fonctionne très bien dans tous les navigateurs, mais était à l'origine des problèmes dans Firefox effectivement conduit au navigateur étant dans un état étrange «cassé».
L'erreur que j'obtenais était 'btnTest n'est pas défini'. Je n'ai pas eu cette erreur dans Safari, Internet Explorer ou Chrome. J'ai supposé que j'avais des balises HTML incompatibles, ou des accolades javascript ou quelque chose d'autre manquant. Finalement, après avoir tout débrouillé, j'ai essayé de supprimer le DOCTYPE. Soudainement dans Firefox (v 3.0.10) il a commencé à renvoyer l'ID correct comme prévu.
Que se passe-t-il !!! ?? Le mode "strict" devrait sûrement me permettre d'accéder à des éléments nommés, et si non, alors pourquoi tous les autres navigateurs me le permettent.
Note: Je peux facilement contourner ce problème avec $ ('# btnTest') [0] .id, ce que je vais devoir faire maintenant jusqu'à ce que je puisse trouver une meilleure solution.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" class="blueCircles">
<head>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$(function() {
alert("ID retrieved through jQuery: " + $('#btnTest')[0].id);
alert("ID retrieved by accessing global variable: " + btnTest.id);
});
</script>
</head>
<body>
<div id="btnTest">
</div>
</body>
</html>
btnTest n'est pas une variable. C'est un identifiant d'un élément DOM. Je ne vois pas ce que vous essayez de faire. document.getElementById ("btnTest"). id est valide, mais inutile. Vous connaissez déjà l'identifiant. –
c'était l'exemple le plus possible d'essayer de faire quelque chose avec un élément DOM. certainement inutile dans cet exemple, mais comme je l'ai dit, j'ai dû affiner le code pour déraciner le problème. Il peut y avoir des cas où je veux une chaîne 'compiler safe' de l'identifiant d'un élément connu dans lequel cas btnTest.id devrait être valide - au lieu de hardcoding "btnTest". Je pense qu'il y a un bug dans firefox 3.0.10. cette version du navigateur montre aussi un taux de conversion des ventes plus bas sur notre site. –
Je suis d'accord avec Matthew. alerte (btnTest.id) suppose que vous avez une variable nommée btnTest avec une propriété nommée id, et n'accède en aucun cas au DOM. Les éléments avec des identifiants ne sont pas disponibles à partir du DOM avec une telle syntaxe. C'est à ça que sert la fonction getElementById(). – zombat