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