获取页面被选中文本的内容,无非就是window.getSelection和document.getSelection以及document.select。支持document.getSelection的浏览器一定支持window.getSelection。而document.select是IE6,7,8,9,10独有的。
window.getSelection和document.getSelection都无法获取input和textarea里面被选中的文本内容,需要结合document.activeElement使用。document.select.createRange()是支持input和textarea的.
代码里有些注释,本函数兼容chrome,IE(6~11),opera,Firefox等主流浏览器,处IE以外,其它浏览器没有测试低版本。
- function getSelectionText() {
- var selText = "";
- if (window.getSelection) { // 只有IE6,IE7,IE8不支持
- var sel = document.activeElement;
- if (sel &&
- (sel.tagName.toLowerCase() == "textarea" ||
- (sel.tagName.toLowerCase() == "input" &&
- sel.getAttribute("type").toLowerCase() == "text")))
- {
- var text = sel.value;
- selText = text.substring(
- sel.selectionStart,
- sel.selectionEnd
- );
- }
- else {
- var selRange = window.getSelection();
- selText = selRange.toString();
- }
- } else {
- if (document.getSelection) { // 只有IE6,IE7,IE8,Firefox不支持. 代码并不会执行到这个分支
- range = document.getSelection();
- selText = range.toString();
- } else if (document.selection.createRange) { // 只有IE6~10支持
- var range = document.selection.createRange();
- selText = range.text;
- }
- }
- return selText;
- }