使用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 fix</div>
JavaScripttesting:
alert(document.getElementById("myE").innerHTML); //alerts "How to fix"
你可以在这里试试 。 确保无论你使用的结果是不是显示
作为一个空间,情况可能如此。 如果你想在某个为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。 而不是返回
它可能只是给你生
您可能无法看到这是一个非破坏性的空间,但它仍然是一个,如果您将该HTML插入到另一个元素,它将作为一个。 你不应该依赖任何地方的不间断的空格字符实体转义为
…如果你这样做,出于某种原因,你可以通过这样做:
x= el.innerHTML.replace(/\xA0/g, ' ')
但这只是逃避U + 00A0而不是其他数千个可能的Unicode字符,所以这是有点问题的。
如果你真的需要得到你的页面的实际HTML源码,你可以在你自己的URL( location.href
)中创build一个XMLHttpRequest
,并在responseText
获得完整的,未parsing的HTML源代码。 几乎从来没有一个很好的理由这样做。