【问题标题】: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);
});