如何解决使用javascript获取选定内容的原始HTML
| 如何使用Javascript获取页面上所选内容的原始HTML?为了简单起见,我坚持使用支持window.getSelection
的浏览器。
这是一个例子。 |
之间的内容代表我的选择。
<p>
The <em>quick brown f|ox</em> jumps over the lazy <strong>d|og</strong>.
</p>
我可以使用以下Javascript捕获并警告标准化的HTML。
var selectionRange = window.getSelection().getRangeAt(0);
selectionContents = selectionRange.cloneContents(),fragmentContainer = document.createElement(\'div\');
fragmentContainer.appendChild(selectionContents);
alert(fragmentContainer.innerHTML);
在上面的示例中,警报内容将折叠尾随元素并返回字符串“ 4”。
如何返回字符串the5ѭ?
解决方法
您将必须有效地编写自己的HTML序列化程序。
从
selectionRange.startContainer
/startOffset
开始,然后从那里向前走到树,直到到达endContainer
/endOffset
,并随行时从节点输出HTML标记,包括进入Element时的打开标签和属性,以及当进入Element时关闭标签。 parentNode
。
没什么好玩的,特别是如果您必须在某个时候支持完全不同的IE <9 Range模型...
(还要注意,您将无法获得完全原始的原始HTML,因为该信息已消失。浏览器仅存储当前的DOM树,这意味着诸如标签大小写,属性顺序,空格和省略的隐式标签在来源和得到的内容之间会有所不同。)
,看一下API,我认为如果不将HTML转换为DocumentFragment,就无法提取HTML,默认情况下,它将关闭所有打开的标签以使其成为有效的HTML。
请参阅将Range或DocumentFragment转换为字符串以获取类似的Q。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。