我需要在网页中获取元素的实际html代码。
例如,如果元素中的实际html代码是"How to fix"
运行此javascript
getElementById('myE')。innerHTML 给我"How to fix"
这是解码后的形式
如何使用javascript获取"How to fix"
?
答案 0 :(得分:21)
您无法获得部分网页的实际 HTML源代码。
当您为Web浏览器提供HTML页面时,它会将HTML解析为某些DOM节点,这些DOM节点是浏览器所关注的文档的最终版本。 DOM保留了与您在单词fix
之前使用Unicode字符U + 00A0非断开空格的HTML类似的重要信息 - 但不是通过实体引用而不是通过实体引用使用它的无关信息只需输入原始版本(
)。
当您向浏览器询问元素节点的innerHTML
时,它不会为您提供解析为生成该节点的原始HTML源,因为它不再具有该信息。相反,它从存储在DOM中的数据生成新的HTML。浏览器决定如何格式化HTML序列化;不同的浏览器产生不同的HTML,很可能它与你原来格式化的方式不同。
特别是
元素名称可以是大写或小写的;
属性可能与您在HTML中声明的顺序不同;
属性引用可能与您的来源不同。 IE经常生成不带引号的属性,甚至不是有效的HTML;您可以确定的是,innerHTML
生成的innerHTML
可以安全地在同一个浏览器中使用,只需将其写入另一个元素的
;
它可能不会使用实体引用,除了可能无法直接包含在文本内容中的字符:&符号,少数字和属性值引用。而不是返回
,它可能只是给你原始的
字符。
您可能无法看到这是一个不间断的空间,但它仍然是一个,如果您将该HTML插入另一个元素,它将作为一个。您不应该依赖任何实体转义为x= el.innerHTML.replace(/\xA0/g, ' ')
的非破坏性空间角色...如果您出于某种原因,您可以通过以下方式实现:
XMLHttpRequest
但这只是逃避U + 00A0而不是其他数千个可能的Unicode字符,所以它有点可疑。
如果您确实需要获取网页的实际源HTML,则可以location.href
创建自己的网址(responseText
),并在{{1}}中获取完整的,未经过解析的HTML源代码}。几乎没有充分的理由这样做。
答案 1 :(得分:5)
你应该有什么工作:
元素测试:
<div id="myE">How to fix</div>
JavaScript测试:
alert(document.getElementById("myE").innerHTML); //alerts "How to fix"
You can try it out here。确保无论您何时使用,结果都不会将
显示为空格,这可能就是这种情况。如果你想把它显示在专为HTML设计的地方,你需要逃避它。