How can I get the element in which highlighted text is in?

后端 未结 3 1245
独厮守ぢ
独厮守ぢ 2020-12-03 05:54

I am trying to learn how to write a bookmarklet where I can highlight some text, click on the bookmarklet and have it tell me what got highlighted. I can get that far, but

3条回答
  •  无人及你
    2020-12-03 06:03

    I don't think you can, he only way to know which element is currently being used would be to use a onclick event on the element. Other than that there is no sure way. You can however search each element until you find an element with the same text,

    jQuery('*:contains(' + selected + ').
    

    You can add an event to get the current element with this code though (untested)

    var all = document.getElementsByTagName('*');
    for (var i = 0; i < all.length; i++)
        all[i].onclick = function(e){
            window.selectedElement = all[i];
            //preventDefault $ StopBubble &
            return false;
        }
    

    And it will be stored in selectedElement

    Ok try This:

    var all = document.getElementsByTagName('*');
    for (var i = 0; i < all.length; i++)
        all[i].onclick = function(e) {
            window.selectedElement = this;
            ((e && e.stopPropagation && e.stopPropagation()) ||
             (window.event && (window.event.cancelBubble = true)));
            return false;
        }
    

    DEMO: http://jsfiddle.net/HQC6Z/1/ Better yet: http://jsfiddle.net/HQC6Z/

    After looking at the other answers, I take back my solution and offer theirs:

    How can I get the element in which highlighted text is in?

    How can I get the element in which highlighted text is in?

提交回复
热议问题