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]