2015-12-14 138 views
-1

這是工作:Chrome擴展:問題與傳遞參數

function click(e) { 
    chrome.tabs.executeScript(null, { 
     code: 'var money = 1;' 
    }, function() { 
     chrome.tabs.executeScript(null, {file: 'peace.js'}); 
    }); 
} 

這不是(編輯代碼,便於):

function click(e) { 

    var test = 'test'; 
    chrome.tabs.executeScript(null, { 
     code: 'var money = ' + test + ';' 
    }, function() { 
     chrome.tabs.executeScript(null, {file: 'peace.js'}); 
    }); 
} 

我怎樣才能正確地傳遞呢? 謝謝!

+0

什麼是你看到的錯誤? – jianweichuah

+0

它說undefined,@jianweichuah –

+0

你有沒有試過看'e'是什麼?將'console.log(e)'添加到函數中,看看它是什麼。 – jianweichuah

回答

0

找到一個解決辦法:

if (e.target.id == 'test1') { 
    chrome.tabs.executeScript(null, { 
     code: 'var money = 1' 
    }, function() { 
     chrome.tabs.executeScript(null, {file: 'peace.js'}); 
    }); 
} else if (e.target.id == 'test2') { 
    chrome.tabs.executeScript(null, { 
     code: 'var money = 2' 
    }, function() { 
     chrome.tabs.executeScript(null, {file: 'test.js'}); 
    }); 
} 
1

我覺得你的問題是字符串值的格式不正確。例如,

function click(e) { 
    var test = 'test'; 
    chrome.tabs.executeScript(null, { 
     code: 'var money = ' + test + ';' 
    }, function() { 
     chrome.tabs.executeScript(null, {file: 'peace.js'}); 
    }); 
} 

是行不通的,因爲當執行var money=test;,腳本不知道什麼test是。

如果你想在傳遞一個字符串,它應該是

function click(e) { 

    var test = 'test'; 
    chrome.tabs.executeScript(null, { 
     code: 'var money = "' + test + '";' 
    }, function() { 
     chrome.tabs.executeScript(null, {file: 'peace.js'}); 
    }); 
} 

這樣一來,執行的代碼將會var money="test";

+0

可移植的方式是做一個JSON編碼。看到重複。 – Xan