使用JavaScript获取原始的html代码

我需要获取网页中元素的实际html代码。

例如,如果元素中的实际HTML代码是"How to fix"

运行这个javascript getElementById('myE')。innerHTML给了我"How to fix"这是解码的forms

我怎样才能得到"How to fix"使用JavaScript?

你有什么应该工作:

元素testing:

 <div id="myE">How to&nbsp;fix</div>​ 

JavaScripttesting:

 alert(document.getElementById("myE​​​​​​​​").innerHTML); //alerts "How to&nbsp;fix" 

你可以在这里试试 。 确保无论你使用的结果是不是显示&nbsp; 作为一个空间,情况可能如此。 如果你想在某个为HTMLdevise的地方展示它,你需要转义它。

您无法获取网页部分的实际 HTML源代码。

当您给Web浏览器一个HTML页面时,它将HTMLparsing成一些DOM浏览器所关心的文档的最终版本的DOM节点。 DOM保留来自HTML的重要信息,就像在fix词之前使用Unicode字符U + 00A0非破坏空间那样 – 而不是通过实体引用使用它的无关信息,而不是仅仅input原始信息(   )。

当您向浏览器请求元素节点的innerHTML ,它不会为您提供被parsing为生成该节点的原始HTML源代码,因为它不再具有该信息。 相反,它会根据存储在DOM中的数据生成新的HTML。 浏览器决定如何格式化HTML序列化; 不同的浏览器会生成不同的HTML,而且有可能不会像您最初格式化的那样。

尤其是,

  • 元素名称可以是上限或下限;

  • 属性可能与您在HTML中声明的顺序不同;

  • 属性引用可能与您的源中不一样。 IE经常生成甚至不是有效的HTML的未引用的属性; 所有你可以确定的是,生成的innerHTML将被安全地在同一浏览器中使用,通过将其写入另一个元素的innerHTML ;

  • 它可能不会使用任何实体引用,除非字符直接包含在文本内容中:&符,less-thans和attribute-value-quotes。 而不是返回&nbsp; 它可能只是给你生   字符。

您可能无法看到这是一个非破坏性的空间,但它仍然是一个,如果您将该HTML插入到另一个元素,它将作为一个。 你不应该依赖任何地方的不间断的空格字符实体转义为&nbsp; …如果你这样做,出于某种原因,你可以通过这样做:

 x= el.innerHTML.replace(/\xA0/g, '&nbsp;') 

但这只是逃避U + 00A0而不是其他数千个可能的Unicode字符,所以这是有点问题的。

如果你真的需要得到你的页面的实际HTML源码,你可以在你自己的URL( location.href )中创build一个XMLHttpRequest ,并在responseText获得完整的,未parsing的HTML源代码。 几乎从来没有一个很好的理由这样做。