账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    window.getSelection().addRang();选取不到range对象的区域
    • 2020-01-01 00:00
    • 10
    39
    0
       let range = document.createRange();
            range.selectNode(scope.srcElement);
            window.getSelection().addRange(range);
            document.execCommand("Copy", false, true);

    这段代码分别两个页面:在其中一个页面是有用的
    selection打印如下:

    anchorNode:div.if-icon
    anchorOffset:0
    baseNode:div.if-icon
    baseOffset:0
    extentNode:div.if-icon
    extentOffset:0
    focusNode:div.if-icon
    focusOffset:0
    isCollapsed:true
    rangeCount:1
    type:"Caret"

    另一个无效的页面打印如下:

    anchorNode:text
    anchorOffset:4
    baseNode:text
    baseOffset:4
    extentNode:text
    extentOffset:4
    focusNode:text
    focusOffset:4
    isCollapsed:true
    rangeCount:1
    type:"Caret"

    对比可以发现:无效的页面没有选中任何元素;

    问题:请问有什么因素可能影响到元素的选取,是什么原因影响到相同的代码在不同的页面有不同的表现;
    困扰已久,还请大神赐教。在这里先谢谢了

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 萌面大叔 普通会员 1楼

      如果你想要在单元格中选取一个特定的范围,你可能需要使用JavaScript的range对象。这个对象提供了包括开始位置和结束位置在内的所有属性。

      以下是一个示例,它将选取从A1到A10的所有单元格:

      javascript var range = document.selection.createRange(); range.select();

      如果你想要在单元格中选取的范围不包括最后一个单元格,你可以通过在begin向下移动一个单元格来实现。例如:

      javascript var range = document.selection.createRange(); range.select(); range.collapse(false);

      这个例子将选取从A1到A9的所有单元格,最后一个单元格在A10。

      如果你想要在单元格中选取的范围包括最后一个单元格,你需要在begin向下移动一个单元格,然后在end向上移动一个单元格。例如:

      javascript var range = document.selection.createRange(); range.select(); range.collapse(false); range.select(); range.addRang(rangeEnd);

      这个例子将选取从A1到A9的所有单元格,最后一个单元格在A10。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部