小编典典

在文本突出显示事件上?

javascript

我很好奇是否有人知道一旦/当用户完成在网页上的文本选择后,我将如何触发一个函数运行?我希望用户能够选择文本,并且在短暂的延迟后(或立即,此时无所谓),文本附近会出现一个叠加按钮,用户可以单击该按钮,然后我返回并运行我的更多基于选择的代码。这是用于Firefox扩展。

我能想到的一个类似示例就像在IE中一样,您可以在其中选择文本,然后显示“
Web加速器”。我99%确信我知道如何实际覆盖按钮并获取所选文本的位置,但是我不知道如何在不进行某种无限循环的情况下检查是否有选中的内容似乎是一个可怕的主意。

编辑:

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

因此,这就是我根据罗伯特的建议得出的,我花了一些时间将所有内容都放在正确的位置,但是效果很好!现在定位我的按钮。


阅读 210

收藏
2020-05-01

共1个答案

小编典典

没有任何onhighlightext类似的东西,但是一个解决方案是绑定onmouseup检查如果input/中没有选择任何文本textarea

编辑

这是适合您的实现示例。我仅在Chrome / Firefox / IE7中对此进行了测试。这同样适用于输入。

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

在软件中,当调用堆栈上使用了太多内存时,会发生堆栈溢出。调用堆栈包含有限的内存,通常在程序开始时确定。调用堆栈的大小取决于许多因素,包括编程语言、机器体系结构、多线程和可用内存量。当调用堆栈上使用过多内存时,堆栈会溢出,通常会导致程序崩溃。[1]此类软件错误通常是由两种编程错误之一引起的。[2]

2020-05-01