2016-08-14 7 views
1

私の拡張機能に必要なAPIキーと秘密があります。私はそのようにフォーマットされた独自のファイルに保存しました。私はちょうど<script type="text/javascript" src="../js/key.js"></script>のように、このファイルを参照することができ、それは2つの変数を呼び出しますが、私はうまくいかないことができ、ポップアップページでWebExtensionのバックグラウンドスクリプトとコンテンツスクリプトのAPIキーの呼び出し

key.js

var APP_KEY = 'App Key Goes Here'; 
var APP_SEC = 'App Secret Goes Here'; 

manifest.jsonを

// manifest.json 
{ 
    "manifest_version": 2, 
    "name": "Trakt for IMDb", 
    "version": "0.1a", 
    "background": { 
     "scripts": [ 
       "js/key.js", 
       "js/background.js"] 
    }, 
    "content_scripts": [ 
     { 
      "js": [ 
       "js/key.js", 
       "js/main.js" 
      ] 
     } 
    ] 
} 

どのように私の背景やコンテンツのスクリプトもそれらにアクセスできるように参照する方法。

私は

"background": { 
    "scripts": [ 
     "js/key.js", 
     "js/background.js" 
    ] 
} 

を次のように私のmanifest.jsonファイルにkey.jsファイルを参照しようとしたしかし、それは動作しません。私はAPP_KEY is not defined

main.js

console.log('Content: ' + APP_KEY); 

私がやっている何をしようとするどのような方法があります

を取得していますか?

+0

あなたの質問に** complete ** [mcve]を含めるように[編集]してください。 'background'キーで定義されたすべてのスクリプトは同じコンテキストで実行されます(https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Specifying_background_scripts)。したがって、* key.js *で定義されている 'APP_KEY'と' APP_SEC'は* background.js *のあなたのコードで利用できます。 [続き...] – Makyen

+0

[続き]:そこからコンテンツスクリプトへの情報の取得についてだけ話している場合は、[メッセージとして渡す]必要があります(https://developer.mozilla.org/ en-US/Add-ons/WebExtensions/Content_scripts#Communicating_with_background_scripts)、またはコンテンツスクリプトの開始方法を指定します。具体的な内容はコードによって異なります。したがって、我々は[mcve]が必要です。 – Makyen

+0

@makyenありがとう私はいくつかの情報を追加しようとしました。何か案は?私はあなたがコンテンツスクリプトがどのように開始されたかについて何か言及しているのを見ますか? – dpDesignz

答えて

1

これはあなたの望むように機能します。バックグラウンドスクリプトとコンテンツスクリプトの両方で、単一のJavaScriptファイルを使用して、同じ機能や変数を共有することができます。

backgroundキーで定義されているすべてのスクリプトrun in the same context。したがって、APP_KEYAPP_SECkey.jsで定義)は、background.jsのコードで利用できます。

manifest.jsonファイル内の単一のjsキーで定義されたすべてのスクリプトは、単一のコンテキストを共有します。これは、あなたのコードでjQueryのようなものを使用できるようにするものです。私はmatchesキーの結果が両方のセットが特定のページまたはタブにロードされた場合、個別のjsリストのために作成された別のコンテキストがあるかどうかを確認していません。さらに、私はコンテンツスクリプトをロードする方法とコンテンツスクリプトをロードする他の方法(例:tabs.executeScript‌​())のマニフェスト.jsonファイルのcontent_scriptsの方法の間で単一のコンテキストが共有されているかどうかをチェックしていません。

以下は、FirefoxとGoogle Chromeの両方でテストされている完全な拡張機能です。どちらのブラウザでも、key.jsで定義されている変数は、バックグラウンドスクリプトとコンテンツスクリプトの両方で使用できます。

manifest.jsonを

{ 
    "manifest_version": 2, 
    "name": "Variables in other files", 
    "description": "Test availability of variables from anther JavaScript file", 
    "version": "0.1", 
    "background": { 
     "scripts": [ 
       "js/key.js", 
       "js/background.js"] 
    }, 
    "content_scripts": [ 
     { 
      "matches": ["*://*.mozilla.org/*"], 
      "js": [ 
       "js/key.js", 
       "js/contentScript.js" 
      ] 
     } 
    ] 
} 

JS/key.js

var APP_KEY = 'App Key Goes Here'; 
var APP_SEC = 'App Secret Goes Here'; 

JS/background.js

console.log('Background: ' + APP_KEY); 
console.log('Background: ' + APP_SEC); 

js/contentScript。JSmozilla.orgにナビゲートする時に

Background: App Key Goes Here 
Background: App Secret Goes Here 

コンソール出力:ロード拡張時に

console.log('Content: ' + APP_KEY); 
console.log('Content: ' + APP_SEC); 

コンソール出力

Content: App Key Goes Here 
Content: App Secret Goes Here 

私はときに、これはあなたのために動作しなかった理由を確認していません最初に試しました。あなたは今あなたのために働いているとコメントに述べました。

+0

もう一度ありがとうMakyen :-D – dpDesignz

関連する問題