2017-09-16 87 views
0

在我的內容腳本,我使用這種方法能夠訪問網頁的變量:獲取Chrome擴展ID編程中注入腳本

function exec(fn) { 
    var script = document.createElement('script'); 
    script.setAttribute("type", "application/javascript"); 
    script.textContent = '(' + fn + ')();'; 
    document.body.appendChild(script); //run the script 
    document.body.removeChild(script); //clean up 
} 

exec(function(){ 
    var test = websiteVar 

    chrome.runtime.sendMessage("extensionID", {test: test}, function(response) { 

    }); 
}); 

它說的extensionID,如果我硬編碼,它的工作原理。但是,我不能使用chrome.runtime.id,因爲它在頁面中注入。我想我讀過他們不在同一個環境下工作。

有沒有辦法以編程方式獲取擴展名?

+0

在我的回答:[調用JavaScript的網頁瀏覽器從擴展方法(https://stackoverflow.com/a/40572286)我提供一個廣義解在向函數傳遞參數的同時從內容腳本執行頁面上下文中的函數。你可以使用它來傳遞extensionId作爲從'chrome.runtime.id'獲得的值。 – Makyen

+0

是的,只需將它作爲參數'+')('+ chrome.runtime.id +');';'並在函數中使用它。 – wOxxOm

回答

1

上面說什麼實例wOxxOm

function exec(fn) { 
    var script = document.createElement('script'); 
    script.setAttribute("type", "application/javascript"); 
    script.textContent = '(' + fn + ')("' + chrome.runtime.id +'")'; 
    document.body.appendChild(script); //run the script 
    document.body.removeChild(script); //clean up 
} 

exec(function(extensionID){ 

    var test = websiteVar; 
    chrome.runtime.sendMessage(extensionID, {test: test}, function(response) { 

    }); 

});