铬中的非连续选择?

| 更新资料 我最近发现,您可以使用Chrome以编程方式创建不连续的选择,方法是在要取消选择的部分之间替换元素/文本节点,也可以隐藏它们然后显示它们。 Chrome的非连续选择示例:http://jsfiddle.net/niklasvh/YKJBW/
var t = $(\'div\').contents().get(0);


$.each(t.nodeValue.split(\" \"),function(i,e){
   t = t.splitText(e.length);
     if (t.length>0){
     t = t.splitText(1);
     }
});



var c = $(\'div\').contents();

$.each(c,function(i,e){    
    if (i>0){
    if (i%3) { }else{
             e.parentNode.replaceChild($(\'<unselect />\').text(e.nodeValue).get(0),e);                           
    }    
}   
});

$(\'unselect\').hide(); 
window.setTimeout(function(){
   $(\'unselect\').show();     
},0);
但是,在执行复制事件时,确实会选中整个选择(即使它们之间有间隙),但是当然可以使用相同的方法在执行复制事件之前以编程方式更改选择。 现在最棘手的部分是,您可以像在Firefox中一样通过按住Ctrl键来创建非连续选择,从而使该功能真正可用吗?我在示例中使用的当前方法将TextNode分为许多部分,出于视觉目的,这没有区别。但是,它也使用其他标签来中断选择,据我所知,该选择无法删除。但是,可以通过删除TextNode并为其添加新的位置来实现相同的功能。问题在于,它将仅考虑添加的最后一个节点,因此,如果您在选择中有多个空格,则将仅考虑您应用的最后一个DOM更改。 谁能想到应用此非连续选择的任何非文档破坏方法,这些方法不会对该选择及其元素进行任何永久性更改? 原始问题 是否可以在Google Chrome浏览器中进行不连续的选择?例如,如果您有一个带有如下文本的元素:
<div>this is some random text</div>
是否可以进行包含
this is
text
的选择,使中间的文本未被选择? 在FF中,这似乎工作正常,您可以在其中添加彼此不相邻的范围,并进行相应的选择。 对于IE,似乎没有任何东西可以让您拥有多个范围,但是IE \的选择对象还有很多其他方法可以弥补这一点。 使用非连续选择,您可以始终在网站的某个部分中添加或添加选择,例如在执行复制操作时,或者强制用户取消选择的某些部分,而您不希望它们被复制。 非连续选择的示例: 工作示例(至少在FF4中工作)。 编辑 要手动执行相同类型的选择,您可以使用Firefox按住ctrl并开始将文本拖到不同的位置,但是在chrome上执行则无效。 编辑2 我想这和它总结得很好。就Webkit浏览器而言,似乎没有什么可期待的。     
已邀请:
        不会。Firefox是唯一支持多个选定范围的主流浏览器。我认为主要的用例是允许选择表中的各个列,否则是不可能的。 据我所知,WebKit并不打算尽快支持多个选定范围。 IE对其IE 9的Range和Selection API进行了大修,但没有实现。不知道Opera是否有任何计划来支持它。请参阅WHATWG邮件列表中的该线程以获取一些信息:     
        不,没有选择多个文本范围的概念。该选择与插入号相关联。一插入号-一选择。     

要回复问题请先登录注册