2

我想在 div 中获取选择文本的 HTML 源并发出警告。

这是我的代码:

if (!window.x) {
    x = {};
}
x.Selector = {};
x.Selector.getSelected = function() {
    var t = '';
    if (window.getSelection) {
        t = window.getSelection();
    } else if (document.getSelection) {
        t = document.getSelection();
    } else if (document.selection) {
        t = document.selection.createRange().text;
    }
    return t;
}

$(function() {

    $(document).bind("mouseup", function() {
        var mytext = x.Selector.getSelected();
        alert(mytext);
    });

资源

但是那返回纯文本。

有什么办法吗?

谢谢你的帮助。

4

2 回答 2

3

http://www.codingforums.com/showthread.php?t=154848#post762994建议如下:

function selHTML() {

    if (window.ActiveXObject) {
        var c = document.selection.createRange();
        return c.htmlText;
    }

    var nNd = document.createElement("p");
    var w = getSelection().getRangeAt(0);
    w.surroundContents(nNd);
    return nNd.innerHTML;
}

谷歌很好(通常无论如何):-)

演示: http: //jsfiddle.net/rR8Sh/1/ 我添加了纯文本选择,以防标签未完全选择并使用 span 而不是p避免添加换行符。它仍然会添加空的<span>;我想不出办法来避免这种情况。

于 2012-04-07T16:24:44.430 回答
1

如果我理解正确,您想获取所选节点的 HTML 吗?尝试这个:

function getSelectedNode() {
    if (document.selection) {
        return document.selection.createRange().parentElement();
    } else {
        var selection = window.getSelection();
        if (selection.rangeCount > 0)
                return selection.getRangeAt(0).startContainer.parentNode;
    }
}

借用这个答案

于 2012-04-07T15:43:42.647 回答