为了账号安全,请及时绑定邮箱和手机立即绑定

在文本突出显示事件?

在文本突出显示事件?

MMTTMM 2019-11-14 10:50:05
我很好奇,如果有人知道/一旦用户完成网页上的文本选择,该如何触发函数运行?我希望用户能够选择文本,并在短暂的延迟后(或立即,此时无所谓)在文本附近出现一个叠加按钮,用户可以单击该按钮,然后我返回并运行我的更多基于选择的代码。这是用于Firefox扩展。我可以想到的一个类似示例就像在IE中一样,您可以在其中选择文本,然后显示“ Web加速器”。我99%确信我知道如何实际覆盖按钮并获取所选文本的位置,但是我不知道如何在不进行某种无限循环的情况下检查是否有选中的内容似乎是一个可怕的主意。编辑://In my overlay.js with the rest of my sidebar codeisTextSelected: function () {           var myText = cqsearch.getSelectedText();        var sidebar = document.getElementById("sidebar");        var sidebarDoc = sidebar.contentDocument || document;        var curHighlightedDiv = sidebarDoc.getElementById("testDiv");        curHighlightedDiv.innerHTML = "Current text selection:" + myText;    }};//In my on firefox load function I added thisdocument.onmouseup = cqsearch.isTextSelected;因此,这就是我根据罗伯特的建议得出的,我花了一些时间将所有内容都放在正确的位置,但是效果很好!现在定位我的按钮。
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

晚会晚了一点,以备将来参考...


看一下MDN上的selectDOM事件。


释放鼠标或按键时,它将触发(至少在Chrome 40中为)。


document.addEventListener('select', callback);


查看完整回答
反对 回复 2019-11-14
?
RISEBY

TA贡献1856条经验 获得超5个赞

进行/更改文本选择时有一个本机事件。在包括IE在内的大多数浏览器上selectionchange都有基本的支持,并且不仅适用于表单元素,而且适用于文档中的任何文本。


document.addEventListener("selectionchange",event=>{

  let selection = document.getSelection ? document.getSelection().toString() :  document.selection.createRange().toString() ;

  console.log(selection);

})

select this text

注意,顾名思义,它会在选择的任何更改时触发。因此,在选择文本时,您将获得对回调函数的多次调用。


查看完整回答
反对 回复 2019-11-14
  • 3 回答
  • 0 关注
  • 332 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信