简体   繁体   English

JavaScript DOM向窗口选择对象添加范围

[英]JavaScript DOM adding a range to window selection object

I am adding a range to a selection object 我正在将范围添加到选择对象

var selection = window.getSelection();
selection.addRange(range);

upon adding the same range on different pages the properties coming out for selection object are different. 在不同页面上添加相同范围时,选择对象的属性会有所不同。

Desired selection Object 所需的选择对象

Selection {type: "Range", extentOffset: 1, extentNode: div#hiddenarea, baseOffset: 0, baseNode: div#hiddenarea…}

Undesired Selection Object 不需要的选择对象

Selection {type: "Caret", extentOffset: 19, extentNode: text, baseOffset: 19, baseNode: text…}

what does selection type caret means and how can I set it as Range. 选择类型插入符号是什么意思,如何将其设置为范围。

As I Explored more I can see the problem is coming when we create selection object initially 随着我的探索,我可以看到最初创建选择对象时问题就来了

var selection = window.getSelection();

Desired 期望

selection: Selection
anchorNode: null
anchorOffset: 0
baseNode: null
baseOffset: 0
extentNode: null
extentOffset: 0
focusNode: null
focusOffset: 0
isCollapsed: true
rangeCount: 0
type: "None"
__proto__: Selection

Undesired 不希望

selection: Selection
anchorNode: text
anchorOffset: 19
baseNode: text
baseOffset: 19
extentNode: text
extentOffset: 19
focusNode: text
focusOffset: 19
isCollapsed: true
rangeCount: 1
type: "Caret"
__proto__: Selection

Try this one bro. 试试这个兄弟。

<script type="text/javascript">
    function SelectFirstLine () {
        var elemToSelect = document.getElementById ("firstLine");
        if (window.getSelection) {  // all browsers, except IE before version 9
            var selection = window.getSelection ();
            var rangeToSelect = document.createRange ();
            rangeToSelect.selectNodeContents (elemToSelect);

            selection.removeAllRanges ();
            selection.addRange (rangeToSelect);
        } else {
            if (document.body.createTextRange) {    // Internet Explorer
                var rangeToSelect = document.body.createTextRange ();
                rangeToSelect.moveToElementText (elemToSelect);
                rangeToSelect.select ();
            }
        }
    }
</script>

hope it helps you with that :) 希望它可以帮助您:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM