Javascript Chrome扩展上下文菜单:获取标题%s作为字符串

Javascript Chrome扩展上下文菜单:获取标题%s作为字符串,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在写我的第一个Chrome扩展,遇到了一个问题。我想要的功能是,当用户右键单击所选单词时,我希望生成的上下文菜单将该单词显示为菜单项,并将文本记录为字符串以供以后使用。通过使用%s作为“标题”属性的值,创建菜单时将显示该文本。我似乎也不知道如何在变量中捕获它。代码如下: chrome.storage.onChanged.addListener(function() { chrome.storage.local.set({'wasFired': false}); console

我正在写我的第一个Chrome扩展,遇到了一个问题。我想要的功能是,当用户右键单击所选单词时,我希望生成的上下文菜单将该单词显示为菜单项,并将文本记录为字符串以供以后使用。通过使用%s作为“标题”属性的值,创建菜单时将显示该文本。我似乎也不知道如何在变量中捕获它。代码如下:

chrome.storage.onChanged.addListener(function() {
    chrome.storage.local.set({'wasFired': false});
    console.log("event firing");

    // begin creation of menu
    var master = chrome.contextMenus.create({
        "id": "SynoStart",
        "title": '%s',
        "contexts":["selection"]
    });
});
如果我在contextmenu.create中运行一个函数,并将对象记录到控制台,我可以深入挖掘并解析出标题。不幸的是,它返回为%s,而不是用户选择的文本(下面的代码)

如果我让回调完成并运行一个简单的
console.log(master)它仅以字符串形式返回ID(在本例中为“SynoStart”)。运行
console.log(master.title)返回未定义的。举例如下:

    chrome.storage.onChanged.addListener(function() {
        chrome.storage.local.set({'wasFired': false});
        console.log("event firing");

        //begin creation of menu
        var master = chrome.contextMenus.create({
            "id": "SynoStart",
            "title": '%s',
            "contexts":["selection"]
        });
        console.log(master); //returns "SynoStart"
        console.log(master.title); //returns undefined
    });
是否有任何方法可以在创建菜单对象时动态提取其标题属性(作为字符串)

这是我关于SO的第一个问题,请随时告诉我应该如何改进。多谢各位

Chrome documentation for表示您可以指定一个回调函数,该函数接收两个参数,第一个参数类型为OnClickData,第二个参数类型为Tab。他们文档中的某些当前错误导致无法访问OnClickData的描述。幸运的是,你仍然可以阅读它。在这里,您将看到一个
selectionText
字段,其描述为:“上下文选择的文本,如果有的话。”

请注意,菜单上单击事件的回调函数指定为创建详细信息的
onclick
字段。指定为chrome.contextMenus.create的第二个参数的回调函数仅用于报告是否创建了菜单项

因此,您的代码可以是:

var master = chrome.contextMenus.create({
    "id": "SynoStart",
    "title": '%s',
    "contexts":["selection"]
    "onclick": function(onClickData, tab){
        console.log(onClickData.selectionText);
    });
}

谢谢你的回答。我已经按照您建议的方式成功地使用了OnClickData,但我希望在创建菜单之前或创建菜单时提取信息,以避免用户必须在菜单中单击一次才能启动,然后再次右键单击以查看显示的结果。不过,您的回答有助于提供有关第二个参数的其他信息,因此,谢谢您。我仍然想知道(为了了解情况)是否可以从title属性中的“%s”数据中提取并使用Chrome解释的信息。@Andymaul123您的问题是“我希望生成的上下文菜单将该单词显示为菜单项,并将文本记录为字符串以供以后使用”。这就是这个答案的作用。如果您需要做一些不同的事情,请创建一个新问题,并清楚地解释您试图实现的目标。我的问题位于代码片段的末尾:“是否有任何方法可以在创建此菜单对象时动态提取其title属性(作为字符串)?”。声明:我想要的功能是,当用户右键单击所选单词时,我希望生成的上下文菜单将该单词显示为菜单项,并将文本记录为字符串以供以后使用指定当用户右键单击页面上的文本选择时,我需要上下文菜单来显示该文本并将其记录为字符串,而无需用户执行任何其他操作,这是使用OnClick所需的。您是否找到了解决方案?我也做不到。
var master = chrome.contextMenus.create({
    "id": "SynoStart",
    "title": '%s',
    "contexts":["selection"]
    "onclick": function(onClickData, tab){
        console.log(onClickData.selectionText);
    });
}