【问题标题】:how to modify the document selection in javascript?如何修改javascript中的文档选择?
【发布时间】:2010-01-15 22:59:40
【问题描述】:

我想修改文档选择(用户当前通过鼠标或键盘选择),如何跨浏览器进行?

【问题讨论】:

  • 您能否更具体地说明“修改文档选择”的含义?
  • 当前通过鼠标或键盘选择的用户.... 清楚吗?对不起我的英语不好。
  • stackoverflow.com/questions/2075304/…,只需使用iframe.window.selection。

标签: javascript


【解决方案1】:

我在文本选择方面的工作不足以提供真正的帮助,但您尝试做的事情是可以完成的。您将需要研究以下两个函数:

  1. createRange() MSDN | MDC
  2. getRangeAt()MDC

我知道它可以跨浏览器实现。您可以在此处查看其中的一些实际操作:

http://fuelyourcoding.com/a-few-strategies-for-using-javascript/

滚动到底部并单击使用 Evernote 脚本的大象图标。但是,我的脚本首先选择主要内容区域(您会看到它闪烁橙色),然后在捕获完成后取消选择。

这是一个迷你 jQuery 插件。它是我从某个网站改编的,就像 cmets 说的那样,我因为不记得而感到可怕。值得注意的是,我将它改编为 jQuery,但代码来自一些网站,他们解释了如何做到这一点:

// Adapted this from somewhere. Feel horrible for not remembering.
$.fn.autoSelect = function(){
    var selectTarget = this[0]; // Select first element from jQuery collection
    if(selectTarget != null) {
         if(selectTarget.tagName == 'TEXTAREA' || (selectTarget.tagName == "INPUT" && selectTarget.type == "text")) {
             selectTarget.select();
         } else if(window.getSelection) { // FF, Safari, Opera
             var sel = window.getSelection();
             var range = document.createRange();
             range.selectNode(selectTarget);
             sel.removeAllRanges();
             sel.addRange(range);
         } else { // IE
             document.selection.empty();
             var range = document.body.createTextRange();
             range.moveToElementText(selectTarget);
             range.select();
         };
    };
    return this; // Don't break the chain
};

貌似这个脚本网上有几个地方,不过here is another variation on it

【讨论】:

    【解决方案2】:

    举个例子,也是最简单的例子,假设您想移动用户的选择以包含元素的内容。以下内容适用于所有主流浏览器:

    function selectElementContents(el) {
        var body = document.body, range, sel;
        if (body.createTextRange) {
            range = body.createTextRange();
            range.moveToElementText(el);
            range.select();
        } else if (document.createRange && window.getSelection) {
            range = document.createRange();
            range.selectNodeContents(el);
            sel = window.getSelection();
            sel.removeAllRanges();
            sel.addRange(range);
        }
    }
    
    selectElementContents( document.getElementById("someElement") );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-29
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      相关资源
      最近更新 更多