[英]Opening a new tab from the context menu in Firefox Add-on SDK
index.js:
var self = require('sdk/self');
var contextMenu = require("sdk/context-menu");
var uri = "";
var script = 'self.on("click", function (node, data) {' +
'var uri = "http://test.net/?blee=" + node.href + "blue=true";' +
'console.log(uri);'+
'tabs.open(uri);'+
'});';
var tabs = require('sdk/tabs');
var menuItem = contextMenu.Item({
label: "label",
context: contextMenu.SelectorContext("a[href]"),
contentScript: script,
onMessage: function (data) {
console.log(data);
}
});`
这就是整个扩展,并且奇怪的是它将var uri
输出到控制台,但它在tabs.open(uri)
处失败。 tabs.open
应该在函数内部而不是这个笨拙的脚本吗?
我正在尝试为firefox编写我的chrome扩展来完成同样的事情。 这是chrome扩展的代码
main.js:
runFunction= function(word){
var query = word.linkUrl;
chrome.tabs.create({url: "http://test.net/?blee=" + query + "&blue=True"});
};
chrome.contextMenus.create({
title: "Title!",
contexts:["link"],
onclick: runFunction
});
在contextMenu脚本中你自己self.postMessage
uri
然后打开menuItem onMessage
函数中的选项卡
var self = require('sdk/self');
var contextMenu = require("sdk/context-menu");
var uri = "";
var script = 'self.on("click", function (node, data) {' +
'var uri = "http://test.net/?blee=" + node.href + "blue=true";' +
'console.log(uri);'+
'self.postMessage(uri);'+
'});';
var tabs = require('sdk/tabs');
var menuItem = contextMenu.Item({
label: "label",
context: contextMenu.SelectorContext("a[href]"),
contentScript: script,
onMessage: function (data) {
tabs.open(data);
}
});
如果上下文菜单的脚本变得很麻烦,请将其放在扩展的data
文件夹中的文件中 - 它必须是data
文件夹
例如,如果它命名为data/contextScript.js
,那么,而不是
contentScript: script,
采用
contentScriptFile: './contextScript.js',
注意路径中缺少 data
那句法,
contentScriptFile: './filename.js'
是一个快捷方式
contentScriptFile: self.data.url("filename.js")
这是早期版本的jpm SDK的语法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.