function getSelectedText() {
var txt = "";
if (document.selection) {
//ie8 非標準狀態下面
txt = window.document.selection.createRange().text
}else{
// ie11 chrome ff window.getSelection|| document.getSelection
txt = window.getSelection()||window.document.getSelection();
}
return txt;
}
var o = document.getElementById('editor');
var win = o.contentWindow;
var doc = o.contentDocument||o.contentWindow.document;
// 以上寫法在第一篇博文有介紹過,主要是爲了兼容什麼來着 ?_-_?
function getSelectedText() {
var txt = "";
if ( document.selection ) {
txt = doc.selection.createRange().text;
}else{
txt = win.getSelection()|| doc.getSelection();
}
return txt;
}
詳 細介紹這個屬性,就不在做兼容說明,所有兼容是基於前面說過的寫法雷同,document.selection 介紹
document.selection 表示當前網頁中的選中內容。代表了當前激活選中區,即高亮文本塊,和/或文檔中用戶可執行某些操作的其它元素。 selection對象的典型用途是作爲用戶的輸入,以便識別正在對文檔的哪一部分正在處理,或者作爲某一操作的結果輸出給用戶。
主要使用的方法有:
- clear() 清除選中的內容
- empty() 取消選中
- createRange() 返回 TextRange 這個方法看着是不是很眼熟,對上一篇中有一個 createTextRange,這兩個到底是什麼淵源?
對象或元素不同,雖然都是返回TextRange。例如:
var r= document.body.createTextRange()
var r= document.createRange()
createTextRange 可以對body、TEXTAREA、BUTTON創建 TextRange。
-------來自百度知道團隊的 temp_1018 的精闢回答
屬性有:
- type 選中內容的類型
- typeDetail 不支持
function setLocation(elm, n) {
if(n > elm.value.length)
n = elm.value.length;
if(elm.createTextRange) { // IE
var textRange = elm.createTextRange();
textRange.moveStart('character', n); // 也可以是 rng.move("character",n);
textRange.collapse();
textRange.select();
} else if(elm.setSelectionRange) { // Firefox
elm.setSelectionRange(n, n);
elm.focus();
}
}