如何確定(跨瀏覽器)是否選擇了任何內容(在當前文本字段中)?我只需要一個true
或false
。我找到了jQuery.selection,但因爲我的使用而超載。如何確定(跨瀏覽器)是否選擇了任何內容?
1
A
回答
3
window.getSelection().toString()
應該爲你工作 - 所有的瀏覽器和IE7 +
編輯支持:我很驚訝,這並不爲輸入元素的工作。但是https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement中提到的屬性有selectionStart
和selectionEnd
,因此您可以改用它們。
console.log(!!(el.selectionStart - el.selectionEnd));
// where el = your input element, like el = $('input')[0]
一個輕微的毛刺,雖然,我發現,如果你選擇文本後模糊輸入這些值不會改變,所以我會利用querySelector
發現,如果輸入元素具有焦點與否:
document.querySelector('#input:focus') //returns first matched element or null
0
最簡單也是最可靠的(我猜)是從jQuery.selection插件取代碼。您將只需要這個功能:
var _getCaretInfo = function(element){
var res = {
text: '',
start: 0,
end: 0
};
if (!element.value) {
/* 値がない、もしくは空文字列 */
return res;
}
try {
if (win.getSelection) {
/* IE 以外 */
res.start = element.selectionStart;
res.end = element.selectionEnd;
res.text = element.value.slice(res.start, res.end);
} else if (doc.selection) {
/* for IE */
element.focus();
var range = doc.selection.createRange(),
range2 = doc.body.createTextRange(),
tmpLength;
res.text = range.text;
try {
range2.moveToElementText(element);
range2.setEndPoint('StartToStart', range);
} catch (e) {
range2 = element.createTextRange();
range2.setEndPoint('StartToStart', range);
}
res.start = element.value.length - range2.text.length;
res.end = res.start + range.text.length;
}
} catch (e) {
/* あきらめる */
}
return res;
};
如果不需要IE8 <支持 - if (doc.selection) {
部分可以刪除。
要從此功能得到布爾,只是return !!res.text;
相關問題
- 1. 檢測何時加載了Iframe內容(跨瀏覽器)
- 2. 如何確定瀏覽器是否支持selectionStart如果沒有選擇
- 3. 跨瀏覽器是否READYSTATE_LOADED?
- 4. 任何瀏覽器的中心內容
- 5. 如何確定是否選中了任何複選框?
- 6. CSS選擇器 - 如何單獨選擇容器內的跨度?
- 7. 瞭解跨瀏覽器兼容性
- 8. 如何知道網站如何確定瀏覽器是否啓用了JS?
- 9. 是否有任何離線的跨瀏覽器測試工具
- 10. 如何在手機瀏覽器中禁用內容選擇
- 11. 如何讓瀏覽器記住用戶選擇的內容?
- 12. 隱藏選擇選項跨瀏覽器
- 13. 如何知道瀏覽器是否真的完成了瀏覽
- 14. 如何隱藏JavaScript選擇選項? (跨瀏覽器)
- 15. 如何確定函數是否不返回任何內容?
- 16. 設置選擇高度跨瀏覽器
- 17. 任何瀏覽器是否都實現了datalist數據屬性?
- 18. 是否有任何瀏覽器實現了DOM3 EventListenerList?
- 19. 是否兼容瀏覽器
- 20. 如何檢測AppleScript是否選擇了某些內容?
- 21. 跨瀏覽器兼容
- 22. 跨瀏覽器兼容性
- 23. 是document.referrer跨瀏覽器兼容嗎?
- 24. 瀏覽器如何決定哪些內容是HTML
- 25. 如何確定瀏覽器是否支持js pushState函數?
- 26. 如何確定popup div是否在瀏覽器之外
- 27. 如何確定Microsoft Edge是否爲默認瀏覽器?
- 28. 如何確定瀏覽器是否支持div支持tabindex?
- 29. PHP:如何確定瀏覽器是否支持PHP中的JavaScript?
- 30. 如何確定設備是否爲桌面瀏覽器?
更換
return res;
不與IE9工作和FF25 –@ThomasZuberbühler耶的確不輸入或textarea的工作。 –