There is no "Text was selected" (DOM)
event, but you can bind a mouseup
event to the document.body
. Within that event handler, you might just check the
document.selection.createRange().text
or
window.getSelection()
methods. There are several topics on Stackoverflow, like this one javascript to get paragraph of selected text in web page.
I'm not sure what you mean with "finding the position", but to stay in my example world you could use the event propertys
for X+Y mouse positions.
Example: http://www.jsfiddle.net/2C6fB/1/
Here's a quick mashup:
$('div').mouseup(function() {
var text=getSelectedText();
if (text!='') alert(text);
});
function getSelectedText() {
if (window.getSelection) {
return window.getSelection().toString();
} else if (document.selection) {
return document.selection.createRange().text;
}
return '';
}
<div>Here is some text</div>
Demo: http://jsfiddle.net/FvnPS/11/
There is a new experimental API that deals with this:
The selectionchange event of the Selection API is fired when the selection object of the document is modified, or when the selection associated with an <input>
or a <textarea>
changes. The selectionchange event is fired at the document in the first case, on the element in the second case.
https://developer.mozilla.org/en-US/docs/Web/Events/selectionchange
Note that this is bleeding edge and not guaranteed to work across even major browsers.
I'm not sure about the mouse thing but this line works for mobile, this invoked every time a change made on the text selection -
document.addEventListener('selectionchange', () => {
});
AFAIK, there is no such event you described. But you can emulate that function.
Look over here for the code and demo.
There is "Text was selected" event. But only for textarea as I hava known.
<textarea onselect="message()" name="summary" cols="60" rows="5">
请写入个人简介,不少于200字!
</textarea>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With