Retrieve parent node from selection (range) in Gecko and Webkit

前端 未结 3 1877
北恋
北恋 2021-02-09 20:37

I am trying to add an attribute when using a wysiwyg editor that uses \"createLink\" command. I thought it would be trivial to get back the node that is created after the browse

3条回答
  •  太阳男子
    2021-02-09 21:06

    This is the code I've used to get the "parentNode" of the text cursor:

    var getSelectedNode = function() {
        var node,selection;
        if (window.getSelection) {
          selection = getSelection();
          node = selection.anchorNode;
        }
        if (!node && document.selection) {
            selection = document.selection
            var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
            node = range.commonAncestorContainer ? range.commonAncestorContainer :
                   range.parentElement ? range.parentElement() : range.item(0);
        }
        if (node) {
          return (node.nodeName == "#text" ? node.parentNode : node);
        }
    };
    

    I tweaked my IE method to approximate yours. Tested and working IE8, FF3.6, Safari4, Chrome5. I set up a jsbin preview that you can test with.

提交回复
热议问题