Javascript:获取选取文本的起始及长度等(转)

本文介绍了一种在不同浏览器(如IE、Firefox和Opera)中获取选中文本的方法,重点在于解决各浏览器间的兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为不同的浏览器,其【JS】代码也有所不同,【IE】、【Firefox】、【Opera】等就是这样,所以B/S架构的软件能把人逼疯了!(注意:“遨游”等其实根本就不算是浏览器,因为它们基本上都是基于【IE】的内核,所以直接忽略不考虑。)

先从【Firefox】开,因为本人的【Firefox】中安装了【Firebug】这个插件,所以,对网页中的任何控件和脚本代码都可以控制的游刃有余。调试【JS】代码也比较方便,很快就找到了那两个关键的属性“selectStart”和“selectEnd”。【Firefox】的问题解决了。

然后是【IE】,这是最气人的,“selectStart”和“selectEnd”属性【IE】根本就不认!都快弄吐血了都没解决这个问题!算了,还是先看看【Opera】吧,用【Firefox】中调试成功的代码在【Opera】中跑,结果,没有问题,直接通过。原因可能是【Firefox】和【Opera】对W3C的标准支持的相对好一些。(你看看,恩!不得不骂比尔,这老不死的东西就是让人头疼,自从在自己的叫“窗口”的小软件——就是【Windows】集成了那个蛮横的【IE】,就一意孤行,不听组织上的话,自己单干,非得制定自己的标准,怪不得比尔是纯美国种呢,跟美国一样,都是那么霸道。。。。。。跑~~~~~~提了,汗。。。)

没办法,只好回来接着捣鼓这个没缝的鸡蛋——【IE】,无奈啊,只好在网上继续搜索!可惜搜所结果同样是——零!真没办法了,还是从【Firebug】中找突破口吧。

【Firebug】中列出了空间的所有属性及方法,排除那些知道的就开始一个一个的在网上查,最后查到了“createRange”这个方法,终于解决了【IE】这个臭鸡蛋。以下给出源代码。

[code]
//获取控件
var obj = document.getElementById('editorInput');

//获取控件的值
var message = obj.value;

//根据浏览器选择处理方法
if(is_moz||is_opera)
{

//如果是【Firefox】和【Opera】走这里
//获取选择文本的起始点
var selStart = obj.selectionStart;

//获取选择文本的长度
var selLen = obj.selectionEnd - obj.selectionStart;

//获取被选择的文本
var sel=message.substr(selStart,selLen);
}
else
{

//如果是【IE】走这里
//获取被选择的文本
var sel=document.selection.createRange().text;

//获取选择文本的长度
var selLen = sel.length;

//获取选择文本的起始点
var selStart = message.search(sel);
}
[/code]

好啦,代码都在这里了,本人在【IE】、【Firefox】和【Opera】三款浏览器中测试通过,其他非IE内核的浏览器没有测试过,所以不好下定论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值