窗口选择返回html

8

同时,https://dev59.com/Z2445IYBdhLWcg3w4-Be - Tim Down
1个回答

31

以下代码适用于所有主流浏览器,并且是此答案的完全副本:

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;
}

这是一个重复的问题,答案与Tim的回答完全相同:https://dev59.com/uW035IYBdhLWcg3wErvM#6668159。 - Dan Dascalescu
@DanDascalescu:你是因为这个回答重复了我在另一个问题中的回答而将其投票否定吗? - Tim Down
@TimDown:是的。我浪费了一些时间比较这个答案和另一个答案,看看你是否在其中一个答案中做出了改进。由于问题是一个关闭的重复,如果这是我的答案,我会编辑它以链接到其他问题的答案,以节省用户的时间。(我的工作流程是我谷歌搜索某些东西,然后在不同的选项卡中打开前几个最有希望的结果,并比较解决方案。) - Dan Dascalescu
3
好的,没问题。几年前我在 Stack Overflow 上为了获取声望比现在更加无情地积累了很多重复答案,所以我会在发现它们时进行修复。 - Tim Down
这仍然只返回当前选择的文本而不是HTML节点。 - Siddhant Varma
@SiddhantVarma:好的,它返回当前选择的文本的HTML表示形式,这正是问题所要求的。可能没有一个单独的DOM节点代表选择,那么你具体需要什么? - Tim Down

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接