我想知道是否有人在我的頁面上選擇了文本,因此我可以在其光標所在的位置顯示上下文菜單。但是,如果他們通過雙擊文本選擇文本,我只想顯示它。這可能嗎?如何判斷用戶是否在我的頁面上選擇了文本
我認爲這是可能的,因爲同樣的事情發生在I.E與那個藍色的加速按鈕的東西。
我想知道是否有人在我的頁面上選擇了文本,因此我可以在其光標所在的位置顯示上下文菜單。但是,如果他們通過雙擊文本選擇文本,我只想顯示它。這可能嗎?如何判斷用戶是否在我的頁面上選擇了文本
我認爲這是可能的,因爲同樣的事情發生在I.E與那個藍色的加速按鈕的東西。
這不夠嗎?
下面的代碼,如果你不想跟隨鏈接:
<div id="target">
Double-click here
</div>
<script type="text/javascript">
$('#target').dblclick(function() {
alert('Handler for .dblclick() called.');
});
</script>
謝謝@Trufa,這與@James的document.selection結合在一起會讓我確切地得到我想要的。 – 2011-04-18 01:59:04
@βӔḺṪẶⱫŌŔ很高興幫助! – Trufa 2011-04-18 02:01:27
我不知道有關雙clicky事情。
但在IE瀏覽器我相信這是document.selection
我知道在鉻它是document.getSelection()
。
這會返回一個選擇範圍對象。
一些輕閱讀:
謝謝James,document.selection的作品! – 2011-04-18 01:58:29
,在大多數瀏覽器上運行一個更強大的解決方案:
<div ondblclick="checkForSelectedText(this)">here is some text</div>
<script type="text/javascript">
function checkForSelectedText() {
var d = document;
var t;
// Modern browsers, including IE 6+
if (d && d.selection && d.selection.createRange) {
t = d.selection.createRange().text;
alert('createRange supported\n' + t);
// Others
} else if (d.getSelection) {
t = d.getSelection();
alert('getSelection supported\n' + d.getSelection());
}
return t;
}
</script>
但是不會裏面像的textarea或輸入元件工作對於大多數瀏覽器。下面是一個更普遍的版本:
<div ondblclick="checkForSelectedText(event)">here is some text
<input value="and some inside an input">
<textarea>Lorem ipsum in a textarea</textarea>
</div>
<script type="text/javascript">
function checkForSelectedText(e) {
var el = e.target || e.srcElement;
var tagName = el.tagName && el.tagName.toLowerCase();
var t;
var d = document;
// Try DOM 2 Range - most browsers, including IE 6+
if (d && d.selection && d.selection.createRange) {
t = d.selection.createRange().text;
alert('createRange supported\n' + t);
// Otherwise try HTML5 - note that getSelection returns
// a string with extra properties
} else if (d.getSelection) {
t = d.getSelection();
alert('getSelection supported\n' +
'\n' + t);
}
// If didn't get any text, see if event was inside
// [email protected]=text or textarea
if (t == '') {
if (tagName == 'textarea' ||
(tagName == 'input' && el.type == 'text')) {
t = el.value.substring(el.selectionStart, el.selectionEnd)
alert('Inside ' + tagName + '\n' + t);
}
}
return t;
}
</script>
的selectionStart和選定結束它可能需要一個表單控件內部的情況多一點的工作,應該有可能是測試。
哦,工作得很好,我已經添加了selectionStart,selectionInProgress和selectionEnd - 非常感謝@RobG,非常感謝! – 2011-04-20 14:51:19
@Trufa,我試過搜索,但是因爲找不到東西,我只能這麼做.. – 2011-04-18 01:59:39