如何使用 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);
在上面的示例中,警告内容将折叠尾随元素并返回字符串 <em>ox</em> jumps over the lazy <strong>d</strong>
.
我如何返回字符串 ox</em> jumps over the lazy <strong>d
?
最佳答案
您必须高效地编写自己的 HTML 序列化程序。
从 selectionRange.startContainer
/startOffset
开始,从那里向前走树,直到到达 endContainer
/endOffset
,从节点输出 HTML 标记,包括当您进入元素时的打开标签和属性,以及当您进入 parentNode
时关闭标签。
没什么好玩的,特别是如果你在某个时候必须支持非常不同的 IE<9 Range 模型......
(另请注意,您将无法获得完全原始的原始 HTML,因为该信息已不存在。浏览器仅存储当前的 DOM 树,这意味着详细信息如标记大小写、属性顺序、空格和省略的隐式标记在源代码和您得到的内容之间会有所不同。)
关于javascript - 使用 javascript 获取所选内容的原始 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129006/