当有人使用鼠标选择页面上的给定文本片段时,如何触发 JavaScript 函数?
另外,有什么办法可以在页面上找到所选文本的位置吗?
更新:为了更清楚,文本片段可以是句子、单词、短语或整个段落的一部分。
当有人使用鼠标选择页面上的给定文本片段时,如何触发 JavaScript 函数?
另外,有什么办法可以在页面上找到所选文本的位置吗?
更新:为了更清楚,文本片段可以是句子、单词、短语或整个段落的一部分。
没有“选择文本”(DOM)
事件,但您可以将mouseup
事件绑定到document.body
. 在该事件处理程序中,您可能只需检查
document.selection.createRange().text
或者
window.getSelection()
方法。Stackoverflow 上有几个主题,比如这个javascript 来获取网页中选定文本的段落。
我不确定“找到位置”是什么意思,但是为了留在我的示例世界中,您可以使用event propertys
for X+Y 鼠标位置。
这是一个快速混搭:
$('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>
有一个新的实验性 API 可以解决这个问题:
当文档的选择对象被修改时,或者当与 an<input>
或 a关联的选择<textarea>
发生变化时,会触发 Selection API 的 selectionchange 事件。selectionchange 事件在第一种情况下在文档上触发,在第二种情况下在元素上触发。
https://developer.mozilla.org/en-US/docs/Web/Events/selectionchange
请注意,这是最前沿的,并且不能保证即使在主要浏览器上也能正常工作。
我不确定鼠标的事情,但这条线适用于移动设备,每次对文本选择进行更改时都会调用 -
document.addEventListener('selectionchange', () => {
});
AFAIK,没有您描述的此类事件。但是您可以模拟该功能。
在这里查看代码和演示。