我正在构建一个chrome扩展程序,该扩展程序依赖于从页面中获取所选文本并稍后显示。
我想要复制这样的一段文本:
<span class="padding:0px;>Hello this is a link <a href="/somewhere">somewhere</a></span>
并返回此:
Hello this is a link <a href="/somewhere">somewhere</a>
即我想获取文本,以及诸如链接,LI,UL,Blockquote之类的东西,但不获取隐藏的样式等。
我当前使用的功能是:
function getSelectionText() {
var text = "";
if (window.getSelection) {
// from here: https://gist.github.com/gleuch/2475825
// selection range
var range = window.getSelection().getRangeAt(0);
// plain text of selected range (if you want it w/o html)
var plaintext = window.getSelection();
// document fragment with html for selection
var fragment = range.cloneContents();
// make new element, insert document fragment, then get innerHTML!
var div = document.createElement('div');
div.appendChild( fragment.cloneNode(true) );
// your document fragment to a string (w/ html)! (yay!)
var text = div.innerHTML;
console.log(text);
} else if (document.selection && document.selection.type != "Control") { // think this is for IE?
text = document.selection.createRange().text;
}
return text;
};
这会捕获所选内容的完整节点片段,但有时会捕获周围的跨度,div,样式等。>>
之间有一些吗?即不仅是原始文本,还不是完整的HTML?
我正在构建一个chrome扩展程序,该扩展程序依赖于从页面中获取所选文本并稍后显示。我想要的是复制一段文本,如下所示:
如果可以枚举要删除的标签,请使用以下功能将其删除: