无法访问函数内的JavaScript变量

时间:2014-10-29 13:57:33

标签: javascript google-chrome

我正在为不同搜索引擎中的选定文本搜索进行扩展。如果所选字符串是特定字符串,则其中一个菜单项会更改。到目前为止,我已经完成了这项任务,它完成了我想要的工作,除了我不能让菜单的“标题”改变。如何在函数内的if语句中为变量“myTitle”赋值?

提前致谢。

var myTitle; // if I give value here it does work, but I need the value based on the if statement bellow.

function myFunction(selectedText) {

    if(selectedText.match (/someString|SomeOtherString/)) {

        var myURL1 = 'https://someURL' + selectedText;
        chrome.tabs.create({url: myURL1});
        myTitle = "title1"; //I can not make the variable to get this value here

    }else{

         var myURL2 = 'https://someOtherURL' + selectedText;
         chrome.tabs.create({url: topicCall});
         myTitle = "title2"; //I can not make the variable to get this value here
         }
    }


chrome.contextMenus.create({
                **"title": myTitle,**  // this should change based on the selection 
                 contexts:["selection"], 
                 onclick: function (info)myFunction(info.selectionText);}                             
                 });

2 个答案:

答案 0 :(得分:2)

你有“因果关系”混淆了。调用chrome.contextMenus.create后,myFunction尚未执行,且myTitle的值尚未分配。

答案 1 :(得分:0)

也许,您可以在加载页面后使用chrome.contextMenus.update。您可以使用默认标题创建菜单,但使用唯一ID。然后使用上面的方法,基于" selectedText"是,并使用ID来替换标题。