繁体   English   中英

从Firefox Add-on SDK的上下文菜单中打开一个新选项卡

[英]Opening a new tab from the context menu in Firefox Add-on SDK

阅读两个网站后 ,我无法从上下文菜单中获取一段JS代码。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM