在Chrome中不连续的选择? [英] Non-continuous selections in chrome?

查看:140
本文介绍了在Chrome中不连续的选择?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近发现,您可以通过编程方式使用不连续的Chrome创建选项,要么替换您想要取消选中或隐藏的部分中的元素/文本节点,然后显示它们。

Chrome的非连续选择示例:(至少在FF4中工作)。
$ b

编辑
要手动执行相同类型的选择,您可以使用firefox按住Ctrl并开始在不同位置拖动文本,但在Chrome上执行此操作不起作用。



编辑2
我想总和它很好。看起来,就webkit浏览器而言,没有什么可以预料的。

解决方案

Firefox是唯一支持多个选定范围的主流浏览器。我认为它的主要用例是允许选择表格中的单个列,这是不可能的。



WebKit不打算随时支持多个选定范围很快,从我能收集到的。 IE浏览器修改了IE 9的范围和选择API,但没有实现它。不知道Opera是否有计划支持它。请参阅WHATWG邮件列表中的此主题了解一些信息:

Update

I recently discovered you can programatically create selections with Chrome which aren't continuous, by either replacing elements / textnodes inbetween in the parts you want unselected or hiding and then showing them.

Example of non-continuous selections for 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);

However when performing the copy event, the whole selection does get selected (even if it has gaps in-between), but of course the same method can be used to programatically alter the selection before the copy event is performed.

The tricky part now is that can you actually make this functionality usuable by holding Ctrl down like you can in Firefox to create non-continous selections. The current method I use in the example breaks the TextNodes into many pieces, which for visual purposes does no difference. It however, also uses additional tags to break the selection, which as far as I've discovered, cannot be removed. However, the same functionality can be reached by deleting TextNodes and adding new ones in place for them. The problem is that it will only take into account the last node added, so if you have multiple spaces in your selection, it will only take into account the last DOM change you applied.

Can anyone think of any non-document breaking ways to apply this non-continous selections which does not make any permanent changes to the selection and its elements?

The original question

Is it possible to make selections which are non continous in Google Chrome? For example if you have an element with text like this:

<div>this is some random text</div>

Is it possible to make a selection which contains for example this is and text making the text in-between unselected?

This seems to work fine in FF, where you can addRanges which aren't next to each other, and the selection is made accordingly.

For IE, there doesn't seem to be anything that would allow you to have multiple ranges, but IE's selection object has a lot of other methods that compensate for it.

With non-continous selections, you could always append or prepend a selection a certain section from a website for example when performing copy actions, or force the user to unselect certain portions of their selections, which you don't want them to copy.

Example of non-continous selection:

working example (working at least in FF4).

edit To perform the same type of selection manually, you can with firefox hold ctrl down and start dragging text in different positions, but performing it on chrome doesn't work.

edit 2 I guess this and this sum it up quite well. Looks like there isn't anything to be expected as far as webkit browsers are concerned.

解决方案

No. Firefox is the only mainstream browser to support multiple selected ranges. I think the main use case for it was to allow selection of individual columns within tables, which is not possible otherwise.

WebKit are not planning to support multiple selected ranges any time soon, from what I can gather. IE overhauled its Range and Selection APIs for IE 9 and didn't implement it. No idea about whether Opera has any plans to support it. See this thread from the WHATWG mailing list for some information:

这篇关于在Chrome中不连续的选择?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆