2014-10-29 7 views
0

Я делаю расширение для выбранного текстового поиска в разных поисковых системах. Один из пунктов меню изменяется, если выбранная строка является конкретной. Я сделал это до сих пор, и он делает то, что я хочу, кроме того, что я не могу изменить «название» меню. Как присвоить значение переменной «myTitle» в выражении if внутри функции?Не удается получить доступ к переменной JavaScript внутри функции

Заранее спасибо.

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

У вас возникли «причины и следствия». Когда вызывается chrome.contextMenus.create, myFunction еще не выполнен, и значение myTitle не было назначено.

+0

Данг, не знаю, как я пропустил это тоже. Да, если myFunction не называется, это никогда не запустится! –

0

Возможно, вы можете использовать chrome.contextMenus.update после загрузки страницы. Вы можете создать меню с названиями по умолчанию, но с уникальными идентификаторами. Затем используйте приведенный выше метод, основываясь на том, что было в «selectedText», и используйте идентификаторы для замены названий.

Смежные вопросы