2016-11-30 122 views
-1

我使用了幾個在我的content.js和popup.js之間共享的常量。我如何將它們放入一個文件並在兩者之間共享它們?Chrome擴展:在content.js和popup.js之間共享常量變量

這不起作用,global.js包含常數

{ 
    "manifest_version": 2, 
    "name": "Test Extension", 
    "version": "0.0", 

    "background": { 
     "persistent": false, 
     "scripts": ["global.js", "background.js"] 
    }, 
    "content_scripts": [{ 
     "matches": ["http://*/*", "https://*/*"], 
     "js":  ["global.js", "content.js"], 
     "run_at": "document_end" 
    }], 
    "browser_action": { 
     "default_title": "Test Extension", 
     "default_popup": "popup.html" 
    }, 
    "permissions": [ 
     "activeTab" 
    ] 
} 

global.js

var TEST = "test" 

content.js/popup.js:

console.log(TEST) 
在彈出

。它打印TEST is not defined

+0

你想做的事情在Chrome中正常工作(我只是重新測試它)。如果它不適合你,那麼你正在做其他事情,我們將需要一個能夠複製問題的[mcve]。注意:你已經展示瞭如何在後臺腳本中包含* globals.js *,但是你沒有展示它是如何包含在彈出窗口中的。 – Makyen

+0

雖然未標記爲[tag:google-chrome-extension],但[在WebExtension中調用API背景和內容腳本中的API鍵值](http://stackoverflow.com/questions/38941405/calling-api-keys-in- background-and-content-scripts-in-webextension)是完全相同的,這個問題可以用相同的答案來回答,但是問題中沒有足夠的代碼來知道實際問題是什麼。 – Makyen

+0

我與你鏈接的問題有相同的代碼,也許問題是run_at?我明天再試一次,讓你知道。 –

回答

0

您仍然需要將<script type="text/javascript" src="global.js"></script>添加到HTML文件。我以爲它是默認包括在manifest.json中指定它

+0

這是更可能發生的問題之一。但是,如果沒有[mcve],我們必須通過心理才能知道這是你的問題。請[編輯問題](http://stackoverflow.com/posts/40892005/edit)將*至少包含* HTML文件,以便這個解決方案實際上可以根據問題中包含的信息來確定。 – Makyen

+0

注意:你可以從背景頁面獲得常量。彈出窗口和背景頁面都處於相同的上下文中。您可以使用['chrome.extension.getBackgroundPage()'](https://developer.chrome.com/extensions/extension#method-getBackgroundPage)獲得對背景頁面的'window'的引用。 – Makyen

+0

您在清單中指定的是內容腳本(永遠不會注入到擴展頁面中)和後臺腳本(與彈出窗口不同的文檔上下文中) – Xan