jQuery html() dans Firefox (utilise .innerHTML) ignore les DOM changements
Je suis vraiment surpris, je n'ai pas ce problème avant, mais il semble que l'appel à jQueries .html() de la fonction sur un élément ignore les changements dans les DOM, j'.e elle renvoie le code HTML dans le code source original. IE n'est pas cela. jQueries .html() utilise la propriété innerHTML en interne.
S'agit-il de se produire? Je suis sur Firefox 3.5.2. J'ai un exemple ci-dessous, où peu importe ce que vous modifiez la zone de texte valeur, le innerHTML de la "conteneur" élément n'a jamais renvoie la valeur définie dans la balise HTML. L'échantillon n'est pas à l'aide de jQuery juste pour faire plus simple (le résultat est le même à l'aide de jQuery).
Quelqu'un aurait-il un travail autour de l'endroit où je peux obtenir le code html d'un conteneur dans son état actuel, c'est à dire dont aucun script changements pour les DOM?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<script type="text/javascript">
<!--
function BodyLoad(){
document.getElementById("textbox").value = "initial UPDATE";
DisplayTextBoxValue();
}
function DisplayTextBoxValue(){
alert(document.getElementById("container").innerHTML);
return false;
}
//-->
</script>
</head>
<body onload="BodyLoad();">
<div id="container">
<input type="text" id="textbox" value="initial" />
</div>
<input type="button" id="button" value="Test me" onclick="return DisplayTextBoxValue();" />
</body>
</html>
Vous devez vous connecter pour publier un commentaire.
Firefox ne met pas à jour le
value
attribut d'un objet DOM basée sur la saisie de l'utilisateur, juste sesvalue
propriété - assez rapide de contourner existe.DOM:
plugin jQuery qui permet
.formhtml()
automatiquement ce faire:C'est un "problème" dans Firefox. Le cahier des charges pour innerHTML ne sont pas entièrement claires, de sorte que les différents fournisseurs de navigateur en œuvre d'une manière différente.
Une discussion sur ce sujet peuvent être trouvées ici:
http://forums.mozillazine.org/viewtopic.php?t=317838#1744233
Merci pour votre formhtml plugin.
Afin de l'utiliser avec
textarea
, j'ai dû le mettre à jour :Je sais que votre question concerne le
innerHTML
, mais si c'était juste de la valeur detextbox
à l'intérieur decontainer
que vous avez besoin, puisvous donnera le bon (mis à jour) zone de texte valeur.
Aussi un autre DOM Approche consiste à définir la
defaultValue
sur l'élément spécifique d'emprunt du même code à partir de l'voté réponse.Qui doit imprimer les mises à jour innerHTML.
de jQuery solution est préférable car elle s'attache à tous les éléments d'entrée à la place d'un élément spécifique. Cela peut être fait en utilisant le "DOM seulement" trop, va entraîner à répéter le DOM pour détecter tous les éléments d'entrée et l'ajout de la
onChange
les appels de méthode sur tous les éléments d'entrée. Dans le cas où vous ne savez pas les champs qui serais sur hte page.Cette fonction de mise à jour a été fait de travailler uniquement sur les champs de saisie ne peut être modifiée par la main.
Ajout de la ligne indiquée pour mettre à jour le visible de saisie de texte: