我如何在Firefox中做OuterHTML?

Nib*_*Pig 37 javascript dom cross-browser

我的部分代码我得到了OuterHTML属性

"<LI onclick="TabClicked(this, 'SearchName', 'TabGroup1');">Name "
Run Code Online (Sandbox Code Playgroud)

所以我可以做一些解决它的东西.

虽然我在Firefox上的javascript中没有OuterHTML属性,但我找不到另一种获取此字符串的方法.想法?

Mic*_*Mic 68

这是我们在pure.js中使用的函数:

function outerHTML(node){
    return node.outerHTML || new XMLSerializer().serializeToString(node);
}
Run Code Online (Sandbox Code Playgroud)

要使用DOM方式:

outerHTML(document.getElementById('theNode'));
Run Code Online (Sandbox Code Playgroud)

它适用于跨浏览器

编辑:警告! XMLSerializer存在问题,它会生成XML(XHTML)字符串.
这意味着您最终可能会使用标签,<div class="team" />而不是
<div class="team"></div>
某些浏览器不喜欢它.最近我对Firefox 3.5感到很痛苦.

因此,对于我们的pure.jslib,我们回到了旧的安全方式:

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);
  }
Run Code Online (Sandbox Code Playgroud)


Ser*_*sky 19

正确的方法(对于非IE浏览器)是:

var sOuterHTML = new XMLSerializer().serializeToString(oElement);
Run Code Online (Sandbox Code Playgroud)

  • 注意XMLSerializer生成XML(XHTML),然后执行诸如`<div />`而不是`<div> </ div>`之类的操作.在这里看到我的答案. (6认同)

Pet*_*tai 12

如果你愿意使用jQuery那么它相对简单:

$('<div>').append( $(ElementSelector).clone() ).html();
Run Code Online (Sandbox Code Playgroud)

如果选择了多个元素,这将获得多个元素的外部HTML.


Ric*_*ema 7

Firefox现在支持outerHTML:

Firefox 11开发人员

Firefox 11于2012年3月13日发布.本文提供了有关此版本中修复的新功能和关键错误的信息,以及指向Web开发人员和附加开发人员的更详细文档的链接.

  • HTML元素现在支持element.outerHTML属性.


Nib*_*Pig 0

弄清楚了!

child.getAttributeNode("OnClick").nodeValue;
Run Code Online (Sandbox Code Playgroud)

getAttribute 不起作用,但 getAttributeNode 效果很好;D