2016-07-14 15 views
1

"sdk/tabs"は私のFirefoxのアドオンでは使えないようです。私は何が間違っているのだろうか。この部分の後に任意のコードの処理を停止しマイbackground.js:例えばvarタブを使用できません= require( "sdk/tabs"); in WebExtensionアドオン

var tabs = require("sdk/tabs"); 

このコードを実行すると、コンソールには「error1?」という出力が表示されますが、上記のすべてが含まれますが、そのスニペットの下には何も表示されません。

console.log('error1?'); 
var tabs = require("sdk/tabs"); 
console.log('error2?'); 

// Listen for tab content loads. 
tabs.on('ready', function(tab) { 
    console.log('error3?'); 
    console.log('tab is loaded', tab.title, tab.url); 
    console.log('error4?'); 
}); 

console.log('error5?'); 

私は私のmanifest.jsonをファイルにアクセス権など"tabs"が含まれています。 "sdk/tabs"を使用するには他に何かを含める必要がありますか?

+2

これは非常に奇妙です。あなたは完全なコードに私たちをリンクしてください、それはgithub上ですか? – Noitidart

+0

[* manifest.json *](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json)ファイルがあるのはなぜですか?そのファイル名は[WebExtensions](https://developer.mozilla.org/en-US/Add-ons/WebExtensions)用です。 Firefox [アドオンSDK](https://developer.mozilla.org/en-US/Add-ons/SDK)の拡張機能には、[* package.json *](https://developer.mozilla.org/)が必要です。最初に['jpm init'](https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm)で生成されたja-jp/add-ons/SDK/Tools/package_jsonファイル#jpm_init)。 – Makyen

+0

Noitidart個人的な仕事なので、Githubに提出することはできません。しかし、私はWebExtensionsでアドオンを混乱させているようです。ありがとう、Makyen。 ありがとう、Makyen。私は今WebExtensionsを調べています。また、Chrome拡張機能をFirefoxに変換するのに適しているようです。返信ありがとう! – Krmtlis

答えて

1

manifest.jsonというファイルがあり、tabs permissionというファイルがあります。 manifest.jsonファイルはWebExtensionベースのアドオンでのみ使用されています。 require("sdk/tabs")Add-on SDK拡張でのみ利用できます。

WebExtensionsとFirefox Add-on SDKの間で混合APIが表示されます。これらはFirefox用の4種類のextensionsのうち2つです。 WebExtensionから、アドオンSDK API(High-Level、またはLow-Levelもありません)は使用できません。同様に、WebExtension JavaScript APIsは、アドオンSDKベースの拡張機能からは利用できません。

具体的には、WebExtensionを開発しているようです。 sdk/tabs APIは、アドオンSDK用です。間違いなくは動作しません WebExtensionベースのアドオンで動作します。一般に、require()が表示されている場合は、WebExtensionアドオンで動作しないアドオンSDKをほぼ確実に処理しています。したがって、WebExtensionベースのアドオンではrequire("sdk/tabs")を使用することはできません。

  1. Add-on SDK

    のFirefox/Mozillaは拡張子の4種類があり、これらのアドオンは、最初jpm initを実行することによって生成されるpackage.jsonファイルで記述されています。これらの拡張機能では、require()を使用して、High-LevelまたはLow-Level APIのいずれかをFirefoxとインターフェイスすることがあります。現在、これらのアドオンは、テストのためにロードされたjpm runによってブートストラップされた拡張子にラップされます。.xpiファイルにjpm xpiで統合されています(つまり、AMO/Mozillaにアップロードされています)。つまり、SDKラッパーを使用してブートストラップされた拡張機能です。
    Mozillaは、拡張機能がrequire("chrome")を使用しないか、またはXUL、XPCOM、またはXBLに依存する限り、アドオンSDKベースの拡張機能を引き続きサポートすることを約束しているようです。
    ブートストラップされた拡張機能でできることのほとんどは、アドオンSDKベースの拡張機能で実行できます。しかし、多くのこのようなことはSDKをバイパスし、アドオンSDKを使用する利点のかなりの部分を失うことになります。

  2. WebExtensions:これらのアドオンは、manifest.jsonファイルで記述されています。このAPIは、Google Chrome拡張機能で使用されているものに似ています。 MozillaはこのAPIがFirefox拡張の未来だと主張していますが、このAPIはまだ開発中です。今のところ、おそらくWebExtensionアドオンを開発してテストして、Firefox Developer Edition、またはFirefox Nightlyでテストすることをお勧めします。また、使用する機能に必要なFirefoxのバージョンを注意深くメモする必要があります。この情報は、MDNのドキュメントページの「ブラウザ互換性」セクションに含まれています。
    WebExtensionsは大幅に異なるAPIを使用します。意図的に、他のアドオンタイプによって提供されるインターフェースを使用する能力はありません。
  3. Bootstrapped:これらの拡張機能は、アドオンをロード/アンロードするためにアプリケーションを再起動する必要のない最初のタイプのMozilla拡張機能であるため、通常「再起動なし」と呼ばれます。しかしながら、再始動なしはそれらがどのように機能するかの記述である。このタイプのアドオンの名前として "restartless"を使用するのは、アドオンSDKとWebExtensionアドオンの両方とも、アドオンのロード時またはアンロード時にアプリケーションを再起動する必要がないためです。そのため、このタイプのアドオンの名前として「再起動なし」を使用しなくなる傾向があります。
    これらのアドオンは、アドオンstartup()shutdown()install()uninstall()のために呼ばれてentry points (functions)が含まれている必要がありbootstrap.jsというJavaScriptファイルを持っています。 これらのアドオンには、アドオンを記述するinstall.rdfが含まれています。
    いつもそうとは限りませんが、拡張子のファイルとディレクトリがMozillaアプリケーション(Firefoxなど)にどのように関係しているかを示すchrome.manifestファイルも含まれています。
    オーバーレイ/ XUL /レガシエクステンションで実行できることのほとんどは、ブートストラップされたアドオンで実行できます。アドオンSDKで実行できることは、ブートストラップされた拡張機能で行うことができます(アドオンSDK拡張機能は、JavaScriptベースのAPIレイヤーでブートストラップされたアドオンです)。 Mozillaは非推奨にする予定です"add-ons that depend on XUL, XPCOM, and XBL."ブートストラップされたアドオンのすべてがこれらのテクノロジに依存するわけではありませんが、ブートストラップされたアドオンがアドオンSDKおよびWebExtensionアドオンよりも低いレベルで動作する傾向があります。したがって、これらの技術を使用する可能性が高くなります。ブートストラップされたアドオンは廃止予定であると言っている人もいますが、そのようなケースは明らかではありません。結局のところ、アドオンSDKの拡張機能は、(require("chrome")を使用しないか、またはXUL、XPCOM、XBLを使用しない限り)廃止されず、すべてのアドオンSDK拡張機能はSDKラッパーだけでブートストラップされた拡張機能です。
  4. Overlay/XUL/Legacy:これらのアドオンには、アドオンを記述するinstall.rdfと、アドオンのファイルがアプリケーションのファイルにどのように関係するかを記述するファイルが含まれています。アドオンがアプリケーションとどのように機能するかは、chrome.manifestファイルに記載されている関係に完全に依存しています。これに対する唯一の例外は、拡張子のアイコンと、install.rdfファイルに示されている拡張機能のオプションを説明するファイルのようなものです。これらの拡張機能は、アプリケーション(Firefoxなど)と非常に低いレベルで対話します。これにより、アプリケーションに変更が加えられたときに破損する可能性が高くなります。
    すべてのオーバーレイ/ XUL /レガシ拡張機能は廃止予定です。
+0

ありがとう詳細な説明。 – Poutrathor

関連する問題