在文字突出事件?

我很好奇,如果有人知道我将如何触发一个function运行,如果/一旦用户完成在网页上select文本? 我希望用户能够select文本,并在短暂的延迟之后(或立即在这一点上没有多大关系),在文本附近出现覆盖button,然后用户可以点击,然后返回并运行更多的是我的代码是基于select。 这是一个Firefox扩展。

我能想到的一个类似的例子就像在IE中,你可以select文本,然后它带来了“networking加速器”。 我99%确定我知道如何覆盖button,并获得所选文本的位置,但我不知道如何检查是否有任何select,没有做某种无限循环,哪只是好像一个可怕的想法。

提前致谢!

编辑:

//In my overlay.js with the rest of my sidebar code isTextSelected: 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 this document.onmouseup = cqsearch.isTextSelected; 

所以这就是我用罗伯特的build议提出来的,花了我一些时间把一切都放在正确的位置上,但是它效果很好! 现在来定位我的button。 万分感谢!

没有任何onhighlightext或类似的东西,但解决办法是绑定onmouseup来检查是否有任何文本被选中,如果这不是在input / textarea

编辑

下面是你的一个实现例子。 我只在Chrome / Firefox / IE7中testing过。 这也适用于input。

http://jsfiddle.net/qY7gE/

来自JSFiddle的代码:

 var t = ''; function gText(e) { t = (document.all) ? document.selection.createRange().text : document.getSelection(); document.getElementById('input').value = t; } document.onmouseup = gText; if (!document.all) document.captureEvents(Event.MOUSEUP); 
 <input type='text' id='input' /> In software, a stack overflow occurs when too much memory is used on the call stack. The call stack contains a limited amount of memory, often determined at the start of the program. The size of the call stack depends on many factors, including the programming language, machine architecture, multi-threading, and amount of available memory. When too much memory is used on the call stack the stack is said to overflow, typically resulting in a program crash.[1] This class of software bug is usually caused by one of two types of programming errors.[2] 

晚会有点晚,但供将来参考…

看看MDN上的select DOM事件。

一旦鼠标或键被释放(至less在Chrome 40中)就会触发。

document.addEventListener('select', callback);

使用mouseup技巧的解决scheme不是正确的解决scheme。 这是一个哈克的方式,而不是完美的。 效率低下,因为你现在捕捉mouseup为这么多废话。

在Firefox插件中做到这一点的真正方法是使用addSelectionListener看到这个主题: 观察突出显示?

现在,即使用户使用键盘作出select,它也被捕获。

感谢Neil让我在MXR上find它