2016-11-30 1 views
-1

Я использую несколько констант, которые разделяют между моими content.js и popup.js. Как я могу поместить их в один файл и поделиться им между ними?chrome extension: Share постоянные переменные между 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) 

во всплывающем окне. js it prints TEST is not defined

+0

Что вы хотите делать отлично в Chrome (я только что проверил его). Если он не работает для вас, тогда вы делаете что-то еще неправильно, и нам понадобится [mcve], который дублирует проблему. ПРИМЕЧАНИЕ. Вы показали, как вы включаете * globals.js * в свой фоновый скрипт, но вы не указали, как он включен в ваше всплывающее окно. – Makyen

+0

Не помеченный как [tag: google-chrome-extension], вопрос [Calling API Keys в сценариях фона и содержимого в WebExtension] (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. Я думал, что он был включен по умолчанию, когда вы указываете его в манифесте. Json

+0

Это была одна из наиболее вероятных проблем. Однако, без [mcve], мы должны быть психическими, чтобы иметь возможность знать, что это была ваша проблема. Пожалуйста, [отредактируйте вопрос] (http://stackoverflow.com/posts/40892005/edit), чтобы включить * как минимум * файл HTML, чтобы на самом деле это решение можно было определить из информации, содержащейся в вопросе. – Makyen

+0

Примечание: вы * можете * получить константы со справочной страницы. Как всплывающая, так и фоновая страница находятся в одном контексте. Вы можете получить ссылку на «окно» фоновой страницы, используя ['chrome.extension.getBackgroundPage()'] (https://developer.chrome.com/extensions/extension#method-getBackgroundPage). – Makyen

+0

То, что вы указали в манифесте, это скрипты контента (которые никогда не вставляются на страницы расширения) и фоновые скрипты (которые находятся в другом контексте документа, чем всплывающее) – Xan