Chrome扩展:在content.js和popup.js之间共享常量变量

问题描述:

我使用了几个在我的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://*.com/questions/38941405/calling-api-keys-in- background-and-content-scripts-in-webextension)是完全相同的,这个问题可以用相同的答案来回答,但是问题中没有足够的代码来知道实际问题是什么。 – Makyen

+0

我与你链接的问题有相同的代码,也许问题是run_at?我明天再试一次,让你知道。 –

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

+0

这是更可能发生的问题之一。但是,如果没有[mcve],我们必须通过心理才能知道这是你的问题。请[编辑问题](http://*.com/posts/40892005/edit)将*至少包含* HTML文件,以便这个解决方案实际上可以根据问题中包含的信息来确定。 – Makyen

+0

注意:你可以从背景页面获得常量。弹出窗口和背景页面都处于相同的上下文中。您可以使用['chrome.extension.getBackgroundPage()'](https://developer.chrome.com/extensions/extension#method-getBackgroundPage)获得对背景页面的'window'的引用。 – Makyen

+0

您在清单中指定的是内容脚本(永远不会注入到扩展页面中)和后台脚本(与弹出窗口不同的文档上下文中) – Xan