Comment dois-je faire OuterHTML dans firefox?
Partie de mon code j'obtiens le OuterHTML propery
"<LI onclick="TabClicked(this, 'SearchName', 'TabGroup1');">Name "
donc je peux faire des trucs involing l'analyser.
Il n'y a pas de OuterHTML propriété en javascript sur firefox et si je ne peux pas trouver un autre moyen d'obtenir cette chaîne. Des idées?
- À partir de votre exemple, il n'est pas clair ce que vous souhaitez accomplir et où voulez-vous utiliser cette propriété.
- Tout ce que je veux est le texte dans l'événement OnClick comme une chaîne de caractères, donc je peux faire des choses avec elle.
- Si tout ce que vous voulez, c'est le onclick, puis l'utilisation de l'orme.getAttribute("onclick").
- Ouais, vous pensez que oui, mais le gros de la recherche sur google m'a montré getattribute était buggé et brisé dans chaque navigateur, et getattributenode était la solution;)
- Ok, puis utilisez getAttributeNode à la place. Ça n'explique toujours pas pourquoi vous voulez outerHTML (bien qu'il existe d'autres raisons, bien sûr)
- La raison pour laquelle je voulais c'était parce que j'avais un peu de javascript qui a analysé pour l'événement onclick et fait un peu de funk avec elle, de faire un contrôle onglet. C'était il y a longtemps, et je ne savais pas jquery =)
Vous devez vous connecter pour publier un commentaire.
Voici la fonction que nous utilisons dans pure.js:
Utiliser le DOM façon:
Et il fonctionne de la croix navigateurs
EDIT: AVERTISSEMENT!
Il y a un soucis avec XMLSerializer, il génère un XML(XHTML) de la chaîne.
Ce qui signifie que vous pouvez jusqu'à la fin avec les balises comme
<div class="team" />
au lieu de<div class="team"></div>
Certains navigateurs ne l'aime pas. J'ai eu quelques douleurs avec Firefox 3.5 récemment.
Donc, pour notre
pure.js
lib, nous sommes revenus à l'ancien et du moyen sûr:document.createElement('_').appendChild(node.cloneNode(true)).innerHTML
document.createElement('div').appendChild( n.cloneNode(true) ).parentNode.innerHTML
fonctionne très bien. Merci!La bonne approche (pour les non-IE navigateurs) est:
<div />
au lieu de<div></div>
. Voir ma réponse ici.Si vous êtes prêt à utiliser jQuery, c'est relativement simple:
Cela permet d'obtenir des l'extérieur HTML de plusieurs éléments si plusieurs éléments sont sélectionnés.
outerHTML est maintenant pris en charge par Firefox:
De Firefox 11 pour les développeurs
Pour la raison que le W3C ne comprend pas outerHTML de la propriété, vous devez juste ajouter suivantes:
Essayez ceci: http://snipplr.com/view/5460/outerhtml-in-firefox/:
Que penser de quelque chose de simple comme cela (pas entièrement testé):
Essayer:
pour diyism
Si tout ce que vous voulez, c'est l'attribut onclick, essayez les solutions suivantes: Cela suppose que vous n'avez pas défini l'événement à l'aide de attachEvent ou addEventListener.
Si vous voulez faire un outerHTML chaîne (juste la promesse de ne pas le prendre à part, après vous rendre):
Cette fonction devrait faire l'affaire dans la plupart des cas, mais il ne prend pas les espaces de noms en compte.
Compris!
getAttribute ne fonctionne pas, mais getAttributeNode travaillé ;D
Je sais que c'est un vieux thread mais si quelqu'un trouve ce avec Google (comme je l'ai fait) - j'ai essayé toutes ces solutions, et aucun d'entre eux travaillaient out-of-the-box, puisque aucun occupait à la fois de l'obtention et définition des propriétés de outerHTML. J'ai trouvé ceci: ce qui a fonctionné pour moi:
Bravo: https://www.inkling.com/read/javascript-definitive-guide-david-flanagan-6th/chapter-15/implementing-the-outerhtml