Javascript:获取关于用户选择的html?
可以使用Javascript通过鼠标获得用户选择的任何内容,如下所示: 我的问题是,我不仅需要这篇文章,还需要:Javascript:获取关于用户选择的html?,javascript,html,wysiwyg,selection,Javascript,Html,Wysiwyg,Selection,可以使用Javascript通过鼠标获得用户选择的任何内容,如下所示: 我的问题是,我不仅需要这篇文章,还需要: 获取围绕此文本的html(例如,如果用户选择“hello”,并且此hello在源代码中生成为:“hello”,则应返回此内容) 对图形执行相同的操作 有人能指导我完成这个过程吗?如果不可能,还有其他方法吗?这将在所有主要浏览器中完成。IE和更多符合标准的浏览器有单独的分支。在IE中,这稍微容易一些,因为从选择创建的专有TextRange对象有一个方便的htmlText属性。在其他浏览
hello
”,则应返回此内容)有人能指导我完成这个过程吗?如果不可能,还有其他方法吗?这将在所有主要浏览器中完成。IE和更多符合标准的浏览器有单独的分支。在IE中,这稍微容易一些,因为从选择创建的专有
TextRange
对象有一个方便的htmlText
属性。在其他浏览器中,您必须使用DOM Range的cloneContents()
方法创建一个DocumentFragment
,其中包含所选内容的副本,并通过将片段附加到元素并返回元素的innerHTML
属性,从中获取HTML
function getSelectionHtml() {
var html = "";
if (typeof window.getSelection != "undefined") {
var sel = window.getSelection();
if (sel.rangeCount) {
var container = document.createElement("div");
for (var i = 0, len = sel.rangeCount; i < len; ++i) {
container.appendChild(sel.getRangeAt(i).cloneContents());
}
html = container.innerHTML;
}
} else if (typeof document.selection != "undefined") {
if (document.selection.type == "Text") {
html = document.selection.createRange().htmlText;
}
}
return html;
}
alert(getSelectionHtml());
函数getSelectionHtml(){
var html=“”;
if(typeof window.getSelection!=“未定义”){
var sel=window.getSelection();
如果(选择范围计数){
var container=document.createElement(“div”);
对于(变量i=0,len=sel.rangeCount;io|netw|o
(管道表示选择边界)这样的情况下,您想做什么?在这里,你有一个选择,它的边界在不同的层次上。很好的评论。想一想,我也许应该重新表述我的问题/需求。我需要的是一个数组,其中html位于选择的左侧,html位于选择的右侧。所以在你的例子中:arr[0]=o,arr[1]=netw,arr[2]=o。另一方面,我在网站上读到,如果你在选择中得到了html的一部分,浏览器会自动添加结束标记,但不确定这是否正确(在所有情况下)。如果上述情况足以让我发布一个新问题并接受这个问题,请告诉我。我能问你为什么需要这个吗?这不是直截了当的,在我看来是不自然的。没错,浏览器确实会返回表示所选内容的有效HTML,以便将其插入文档的其他位置。对于IE,它返回一个字符串,而其他浏览器返回一个DocumentFragment
节点。通常考虑文档中的节点而不是HTML字符串表示来考虑HTML文档的部分。