如何获取所选锚文本的标记名称及其 href

How to get the tagname and its href of selected anchor text

本文关键字:href 文本 何获取 获取      更新时间:2023-09-26

当我在段落中选择一个链接(没有ID或类)时,我需要获取选定的链接href值。如何在jQuery中做到这一点? 我正在使用document.getSelection()方法。但是我在document.getSelection()中没有看到任何返回 href 值的方法。

当我通过拖动鼠标选择链接时,我能够获得如下所示的 href 值。

currentLink = document.getSelection().anchorNode.parentElement.href;

但是当我通过双击文本选择链接时,上面的命令不会返回 href 值。请帮忙。

在这里,我给你写了一些东西来帮助你入门。它比原始代码更跨浏览器:

(function(AnchorSelector, $, undefined) {
    AnchorSelector.getAnchorHrefs = function(e) {
        var container = '';
        if (window.getSelection) {
            var sel = window.getSelection();
            if (sel.rangeCount) {
                var div = $('<div>');
                for (var i = 0, len = sel.rangeCount; i < len; ++i) {
                    div.append(sel.getRangeAt(i).cloneContents());
                }
                container = div;
            }
        } else if (document.selection) {
            container = $('<div>').append(document.selection.createRange().htmlText);
        }
        var arr = $.map(container.find('a'), function(n, i) {
            return ($(n).attr('href'));
        });
        if (arr.length) {
            alert(arr.join(','));
        }
        // Note: you can check e.type to see if it was a 'dblclick' or a 'mouseup' 
        // you may need to employ some type of debouncing to not get two alerts
        // when you double click the text
    }
    $(function() {
        $(document)
            .dblclick(AnchorSelector.getAnchorHrefs)
            .mouseup(AnchorSelector.getAnchorHrefs);
    });
})(window.AnchorSelector = window.AnchorSelector || {}, jQuery);

这是一个jsFiddle演示。