【问题标题】:How to catch the deselection event in Add-on SDK in Firefox如何在 Firefox 的附加 SDK 中捕获取消选择事件
【发布时间】:2013-07-08 15:54:55
【问题描述】:

我使用 Add-on Builder & SDK 来开发 Firefox 插件。当用户通过 sn-p 选择一段文本时,我捕捉到该事件:

var selection = require("sdk/selection");
selection.on('select', function () {
//Doing something
});

但是,当用户不再选择该文本时,我还想要做其他事情,但我不知道该怎么做。任何人都可以帮助我吗?非常感谢。

【问题讨论】:

    标签: firefox-addon firefox-addon-sdk add-on


    【解决方案1】:

    我不知道是否有关于取消选择文本的事件。

    但是,您可以在包含该文本的 body 或 div 上注册鼠标单击事件,然后在事件的回调函数中,您可以检查当前是否选择了最后选择的文本。

     var selection = require("sdk/selection");
     var lastText;
    
     function addSelection(){
        var selection = false;
        var body = document.body;
        if(!selection.text){
            //deselection
            //remove DOM listeners
            body.removeListener('click', addSelection);
        }
        if (!selection.isContiguous) {
             for (var subselection in selection) {
                 if(subselection.text == lastText){
                     selection = true;
                 }
             }
        } else if(selection.text && selection.text == lastText){
             selection = true;
        }
    
        if(!selection){
            //deselected
            //remove DOM listeners
        }
    
     }
     selection.on('select', function () {
        var body;
        if(lastText !== selection.text){
           //deselected
           //remove listeners
        };
        lastText = selection.text;
    
        body = document.body;
    
        //add DOM listeners like click - that can potentially remove selection
        body.addEventListener('click', addSelection);
     });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2017-10-04
      • 1970-01-01
      • 2013-02-23
      • 2020-05-29
      • 2013-02-08
      • 1970-01-01
      相关资源
      最近更新 更多