Na události zvýraznění textu?

Zajímalo by mě, jestli někdo ví, jak bych spustil funkci, aby se spustila, pokud / jakmile uživatel dokončí výběr textu na webové stránce? Chtěl bych, aby uživatel mohl vybrat text a po krátké prodlevě (nebo okamžitě, v tuto chvíli na tom moc nezáleží) se u textu objeví překryvné tlačítko, na které může uživatel kliknout a já se vrátím a spustím více mého kódu, který je založen na výběru. Toto je pro rozšíření Firefoxu.

Podobný příklad, který mě napadá, by byl jako v IE, kde můžete vybrat text a pak to vyvolá „webové akcelerátory“. Jsem si na 99 % jistý, že vím, jak bych ve skutečnosti překryl tlačítko a získal pozici vybraného textu, ale nemám ponětí, jak zkontrolovat, zda je něco vybráno, aniž bych udělal nějakou nekonečnou smyčku, která prostě to vypadá jako hrozný nápad.

EDIT:

//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;

Takže to je to, s čím jsem přišel pomocí Robertova návrhu, a trvalo mi nějakou dobu, než jsem vše uvedl na správné místo, ale funguje to skvěle! Nyní k umístění mého tlačítka.

Odpověď

Neexistuje žádný onhighlightext nebo něco podobného, ​​ale řešením by bylo svázat onmouseup zkontrolovat, zda je vybrán nějaký text, pokud tento není v input /textarea .

Upravit

Zde je příklad implementace pro vás. Testoval jsem to pouze v Chrome/Firefox/IE7. Toto funguje také ve vstupech.

http://jsfiddle.net/qY7gE/

Kód z 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]