2013-12-13 66 views
5

我想做一個簡單的擴展,它將一個變量從背景傳遞給彈出窗口。問題是,我得到'未定義'的迴應。將變量從背景傳遞到Chrome擴展上彈出

清單:

{ 
    "name": "Get var", 
    "description": "get var", 
    "version": "2.0", 
    "permissions": [ 
    "activeTab" 
    ], 
    "background": { 
    "scripts": ["background.js"], 
    "persistent": true 
    }, 
    "browser_action": { 
    "default_title": "Get that variable", 
    "default_popup": "popup.html" 
    }, 
    "manifest_version": 2 
} 

background.js

var myURL = 'aaa'; 

popup.html

<!doctype html> 
<html> 
    <head> 
    <script src="popup.js"></script> 
    </head> 
    <body> 
    </body> 
</html> 

popup.js

document.addEventListener('DOMContentLoaded', function() { 
    var bg = chrome.extension.getBackgroundPage(); 
    var myURL = bg.myURL; 
    alert(myURL) 

}); 
+0

嘗試'window.myURL ='aaa';'在background.js – rsanchez

回答

-2

最後我發現問題,我看後臺頁面需要後臺權限才能工作(chrome extension permissions documentation here)。所以我改變了這樣的清單:

{ 
    "name": "Get var", 
    "description": "get var", 
    "version": "2.0", 
    "permissions": [ 
    "activeTab,background" 
    ], 
    "background": { 
    "scripts": ["background.js"], 
    "persistent": true 
    }, 
    "browser_action": { 
    "default_title": "Get that variable", 
    "default_popup": "popup.html" 
    }, 
    "manifest_version": 2 
} 
+3

背景頁面當然不**需要'背景'權限才能工作。 「背景」權限用於完全不同的目的,正如您鏈接到的文檔中明確指出的那樣:_當任何已安裝的託管應用程序,打包應用程序或擴展具有「後臺」權限時,只要用戶登錄,Chrome就會運行(不可見)進入他們的電腦 - 在用戶啓動Chrome之前。 「背景」權限還使Chrome繼續運行(即使在最後一個窗口關閉後),直到用戶明確退出Chrome ._ – gkalpak

+1

順便說一句,如果這是您想要的(在後臺運行),您應該在您的問題,以保存自己(和我們自己)一段時間;) – gkalpak

+0

我什麼都沒改,但添加了背景許可,它的工作。我想要的是讓它工作:) – Kuzgun

8

你的代碼(正如你在你的問題中發佈的那樣)是正確的,應該可以正常工作。 (事實上​​,當我使用您提供的代碼創建了一個擴展示例時,它確實按預期工作。)
您在複製粘貼實際代碼或其他東西時會意外地改變了某些東西(您遺漏了某些東西你的文章)。


BTW,我會建議尋找到event-pages(即非持久性背景的網頁),這是資源更友好。請記住,是移動到活動頁面將需要以一些變化的工作代碼:

document.addEventListener('DOMContentLoaded', function() { 
    chrome.runtime.getBackgroundPage(function (bg) { 
     var myUrl = bg.myUrl; 
     alert(myUrl); 
    }); 
}); 

注意:我不以任何方式暗示你收到undefined的原因是你使用了一個持久的背景頁面。您發佈的代碼應該可以在持久的背景頁面下正常工作 - 使用活動頁面(只要有可能)就更好。

0

我跑過類似的問題;我的問題是我沒有在更改清單後重新加載擴展。

我猜想OP的問題是一樣的。

相關問題