在Web页面中控制其元素的选择状态
来源:互联网 发布:python3接收post数据 编辑:程序博客网 时间:2024/05/17 07:41
为了在Web页面上使用文本搜索,在文本框内实现选择效果,在页面上屏蔽选择状态等。我们需要使用脚本(如JavaScript)来精确的控制页面中UI元素的选择状态。下面从操作元素选择区和屏蔽元素被选择两个方面来说一说。
操作元素选择区,我们可以使用对应对象的select()方法选择页面内容,其中包括INPUT元素中的内容、TextRange对象中的文字和controlRange Collection对象中的控件。
1、 Select Input
<a href="#" onclick="document.getElementById('txb').select()">Select</a>
2、this is a span. Select Text
<a href="#" onclick="SelectText();">Select</a>
<script language="javascript">
function SelectText()
{
var range = document.body.createTextRange();
range.findText("this is a span.");
range.select();
}
</script>
3、 Select Control
<select id="slt2"><option>select</option></select>
<a href="#" onclick="SelectControl();">Select</a>
<script language="javascript">
function SelectControl()
{
var controlRange = document.body.createControlRange();
controlRange.add(document.getElementById('slt1'));
controlRange.add(document.getElementById('slt2'));
controlRange.select();
}
</script>
上面是主动操作页面元素的选择状态,下面说说怎么屏蔽页面中的选中状态。
在IE5.5及以上版本中,我们可以使用这两种方便的方法来屏蔽对元素的选择。一是使用元素的属性unselectable,另一种方法是使用元素的事件onselectstart。比如我们让一个span内的文字不能不选择,我们可以使用:
或者使用:
这两种方法有什么异同呢?第一种使用unselectable属性,只能使该元素内的直接内容不能被选中,如果里面包含子元素,子元素内容不受影响;使用onselectstart事件,由于IE本身使用bubble up事件处理模型,使用这种方法,将可以屏蔽掉容器元素内任何元素的被选择特性。但是这两个方法却都有一个共同的缺陷,就是如果选择开始于被屏蔽元素之外时,这些被屏蔽的元素还是可以被选中。看下面的事例:
这是一段不能被选中的文本。(子元素文本例外)
这也是一段不能被选中的文本。(子元素文本依旧)
如果我们使用鼠标在蓝框或绿框内托拽,我们是不能选中内部文本的,同时如果我们选中了其它的元素,点击蓝框内部,不能取消其它元素的选中状态;点击绿框内部则可以取消。可是如果我们使用鼠标从框外开始选取,或者直接按Ctrl+A,这两个本身已经屏蔽选择状态的元素,还是被选中了。所以我们如果要屏蔽页面的任何选取操作,最简单的方法就是在body元素上添加onselectstart="return false;"。这样就是不管使用什么方法,也不能选中页面里的元素了。
. . .
</body>
这样一来似乎是一劳永逸了,可是当我们使用input type=text、textarea等控件时,我们会发现这里面也不能使用选择操作了,真是晕死!怎么办呢?
解铃还须系铃人不是,既然onselectstart使用bubble up特性,那么我们同样在return false之前做检查就行了。比如我们要完全屏蔽页面的选择操作,但是input type=text、textarea内还需要使用选择,解决示例如下:
. . .
</body>
BTW: 如果是模态窗口就不用自己去弄了,因为里面的元素本身就不能被选中。
- 在Web页面中控制其元素的选择状态
- 在Web页面中控制其元素的选择状态
- CSS控制元素的在页面中水平、垂直居中
- select下拉框如何在本页面中获取其选择的值?
- 选择鼠标指针浮动在其上的元素,并设置其样式:hover
- Struts2中访问Web元素的3中方法RequestAware,SessionAware,ApplicationAware在jsp页面间传值!
- 在Web页面中实时返回状态信息
- 在Struts2中访问Web页面元素request、response、session、application的四种方法
- 页面中关于“充电”状态图片的选择?
- 在Web页面中控制MediaPlayer播放器的一般操作!
- css中控制元素的浮动和页面布局
- 在数组中 找左边都比其小右边都比其大的元素
- 有关针对数据中以0,1,2等来区别使用状态,而在页面中显示为其表达的可用以及无法使用。。。。
- 如何在页面中使用Acegi权限集合和taglib控制页面元素
- 控制VC++.NET中WEB对话框的HTML元素属性
- Web Service 的状态控制
- Web Service 的状态控制
- Java Web开发中关于页面权限的控制
- C#基础一
- 使用xargs与awk联合使用批量杀进程,很方便
- ASP.NET中常用功能代码总结(上传图片到数据库,从数据库中读取图片)
- 电子与信息工程专业必读书籍1000本
- crontab -e 无法使用的解决方法
- 在Web页面中控制其元素的选择状态
- asp.net的页面生存周期
- 倒计时登录的小例子
- asp.net生成随机验证码
- unix中获得昨天或更早日期的简便方法-变更时区法
- asp.net中控制文字自动换行
- asp.net文件上传的常用方法
- freebsd6..2 Failed loading /usr/local/lib/php/20060613/ZendExtensionManager.so
- ID,ClientID,UniqueID的区别