Firefox addon firefox插件上下文菜单标签

Firefox addon firefox插件上下文菜单标签,firefox-addon,firefox-addon-sdk,Firefox Addon,Firefox Addon Sdk,以上是我代码的一部分。问题是当this.label设置为“”时,右键单击菜单会显示一个空标签,但我不希望显示该标签。我知道如果self.on('context',…);函数返回false,但我不知道如何向内容脚本发送消息 顺便说一下,get_selected_text()函数最好在使用“sdk/selection”的插件脚本中定义,因此它没有在内容脚本中定义 那么,如何向内容脚本发送消息(选择),或者是否可能? 或者self.on('context',…)之后到底发生了什么;函数返回false以

以上是我代码的一部分。问题是当this.label设置为“”时,右键单击菜单会显示一个空标签,但我不希望显示该标签。我知道如果self.on('context',…);函数返回false,但我不知道如何向内容脚本发送消息

顺便说一下,get_selected_text()函数最好在使用“sdk/selection”的插件脚本中定义,因此它没有在内容脚本中定义

那么,如何向内容脚本发送消息(选择),或者是否可能?
或者self.on('context',…)之后到底发生了什么;函数返回false以使标签不显示

试试这段代码。每当发现具有唯一值的标签时,我使用样式表使“无显示”
不显示此标签唯一ya

因此,现在不要将其设置为空白,而是将其设置为
labelValToHide

context_menu.Item({
    label: "Search",
    context: context_menu.SelectionContext(),
    contentScriptFile: [data.url("my_scripts/post_messages.js")],
    onMessage: function(msg) {
        if (msg == 'context') {
            var text = get_selected_text();
            if (text.length > 2) {
                this.label = 'Search "' + text + '"';
            } else {
                this.label = "";
            }
        }
        if (msg == 'click') {
            var filename = 'selected_word.txt';
            var str = get_selected_text();
            saveText(filename, str);
        }
    },
});

我提出了一个解决方案,虽然不完美,但对我来说已经足够了

var {Cc, Ci} = require('chrome');
var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService);
var labelValToHide = "dont show this label unique ya ya";
var css = "label[value='" + tempHold + "'] { display:none; }";
var newURIParam = {
    aURL: 'data:text/css,' + encodeURIComponent(css),
    aOriginCharset: null,
    aBaseURI: null
}
cssUri = Services.io.newURI(newURIParam.aURL, newURIParam.aOriginCharset, newURIParam.aBaseURI);
sss.loadAndRegisterSheet(cssUri, myServices.sss.AUTHOR_SHEET);

context_menu.Item({
    label: "Search",
    context: context_menu.SelectionContext(),
    contentScriptFile: [data.url("my_scripts/post_messages.js")],
    onMessage: function(msg) {
        if (msg == 'context') {
            var text = get_selected_text();
            if (text.length > 2) {
                this.label = 'Search "' + text + '"';
            } else {
                this.label = labelValToHide;

            }
        }
        if (msg == 'click') {
            var filename = 'selected_word.txt';
            var str = get_selected_text();
            saveText(filename, str);
        }
    },
});


//on unload of addon run this:
//myServices.sss.unregisterSheet(cssUri, myServices.sss.AUTHOR_SHEET);
然后,将所选文本另存为body属性,以便我可以执行我想要的操作

var selection_workers = [];
tabs.on('ready', function(tab) {
    var worker = tab.attach({
        contentScriptFile: [data.url("my_scripts/receive_post_messages.js"),],
    });
    selection_workers.push(worker);
});

selection.on('select', function() {
    var obj = {
        text: get_selected_text(),
        url: tabs.activeTab.url,
    };
    for (var i in selection_workers) {
        var worker = selection_workers[i];
        worker.port.emit('selected_text', obj);
    }
});