37 votes

Comment dois-je faire OuterHTML dans firefox?

Une 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?

68voto

Mic Points 13418

Voici la fonction que nous utilisons dans pure.js:

function outerHTML(node){
    return node.outerHTML || new XMLSerializer().serializeToString(node);
}

Pour utiliser le DOM manière:

outerHTML(document.getElementById('theNode'));

Et il fonctionne de la croix-navigateurs

EDIT: ATTENTION! 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 l' <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:

function outerHTML(node){
    // if IE, Chrome take the internal method otherwise build one
  return node.outerHTML || (
      function(n){
          var div = document.createElement('div'), h;
          div.appendChild( n.cloneNode(true) );
          h = div.innerHTML;
          div = null;
          return h;
      })(node);
  }

19voto

Sergey Ilinsky Points 16803

La bonne approche (pour les non-IE navigateurs) est:

var sOuterHTML = new XMLSerializer().serializeToString(oElement);

12voto

Peter Ajtai Points 26377

Si vous êtes prêt à utiliser jQuery, c'est relativement simple:

$('<div>').append( $(ElementSelector).clone() ).html();

Cette obtiendrez de l'extérieur HTML de multiples éléments si plusieurs éléments sont sélectionnés.

7voto

Rich Bennema Points 7728

outerHTML est maintenant pris en charge par Firefox:

À partir de Firefox 11 pour les développeurs

Firefox 11, expédié le 13 Mars 2012. Cet article fournit des informations sur les nouvelles fonctionnalités et correction de bugs dans cette version, ainsi que des liens vers des documents plus détaillés pour les développeurs web et ajouter des développeurs.

  • L'élément.outerHTML propriété est maintenant pris en charge sur les éléments HTML.

2voto

Mark Bell Points 11287

Essayez ceci: http://snipplr.com/view/5460/outerhtml-in-firefox/:

if (document.body.__defineGetter__) { 
   if (HTMLElement) {
      var element = HTMLElement.prototype;
      if (element.__defineGetter__) {
         element.__defineGetter__("outerHTML",
           function () {
              var parent = this.parentNode;
              var el = document.createElement(parent.tagName);
              el.appendChild(this);
              var shtml = el.innerHTML;
              parent.appendChild(this);
              return shtml;
           }
         );
      }
   }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X