2017-07-30 50 views
0

我正在構建Chrome擴展。我有這個功能,這也是引發作爲上下文菜單的回調點擊:將info.selectionText的值傳遞給內容腳本

background.js

function setTranslation(info, tab) { 
    var parseWord = 'var word = ' + info.selectionText; 
    alert(parseWord); // works here 
    chrome.tabs.executeScript(tab.id, { 
     code: parseWord 
    }, function() { 
     chrome.tabs.executeScript(tab.id, { 
      file: 'lightbox.js' 
     }); 
    }); 

的lightbox.js現在只提醒傳遞的值:

收藏夾.js文件

alert(word); 

我試圖找到一種方式來傳遞值(info.selectionText)到內容腳本(lightbox.js)。當background.js中的code屬性的值是一個簡單的字符串時,它適用。但是,當我將它連接到info.selectionText的值時,它會提示undefined

這是因爲行爲的異步嗎? 有沒有辦法讓它與調整一起工作還是必須使用消息傳遞?

回答

1

假設info.selectionText爲abc,請看注入的代碼:var word = abc。現在你可以看到abc這裏不是一個字符串,而是一個未定義的變量名!

堅固的解決方案是使用JSON.stringify逃脫嵌入式引號然後將字符串周圍雙引號:

var parseWord = 'var word = ' + JSON.stringify(info.selectionText);