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