1

私は、アプリケーションから角度とイオンのWebExtensionを実現しようとしています。 アプリケーションが拡張機能で読み込まれ、コンテンツスクリプトとバックグラウンドスクリプトの間でメッセージを送信できますが、TypeScriptコードは解釈されず、アプリケーションの変数にデータを格納できません。 AngularアプリケーションでWebページのコンテンツを取得したいと思います。 私を助けてもらえますか?それが技術的に可能かどうか知っていますか?私はあなたの応答に感謝します。角型と型スクリプトを使ってWebExtensionを構築する

manifest.jsonを:

{ 
    "manifest_version": 2, 
    //[...] 
    "background": { 
    "page": "index.html#/background" 
    }, 
    "content_scripts": 
    [{ 
    "matches" : ["<all_urls>"], 
    "js": ["content_script.js"] 
    }] 
} 

content_script.js:

browser.runtime.sendMessage({url: location.href}); 

背景スクリプト(角):

ngOnInit() { 
    var browser = browser || chrome; 
    browser.runtime.onMessage.addListener(this.showMessage); 
} 

public url: string; 
showMessage(message) { 
    alert(message.url); // It works 
    this.url = message.url; 
    alert(this.url); // Doesn't work 
} 
+0

あなたはすべてのエラーを取得するのですか? – toskv

+0

いいえ、私はエラーがありません。アプリケーションのサービスを呼び出すことができないため、私のアプリケーションはAngularJSアプリケーションとして解釈されません。 この例では、message.urlは情報を適切に取得しますが、別の変数に格納するとすぐには機能しません:this.url = message.url; 次の設定(manifest.json)では、私のAngularJSアプリケーションは拡張機能のポップアップに非常によく表示されますが、私がしようとしているのは、このアプリケーションをバックグラウンドで実行して、ポップアップでデータを再利用できるようにすることです。 "browser_action":{ "default_popup": "index.html" – STK913

+0

"エラー:これは未定義です" – STK913

答えて

0

問題が解決しました!

私は説明が、このラインを与えることができない。

browser.runtime.onMessage.addListener(this.showMessage); 

は、このコードと同じです:

browser.runtime.onMessage.addListener(function(message) { 
    alert(message.url); // It works 
    this.url = message.url; 
    alert(this.url); // Doesn't work 
}); 

あなたがしなければならなかったので、「機能」は、活字体によって異なって解釈されています

これを使用できる場合は、次のコードを使用してくださいWebExtensionsため

const links: any = [ 
    { component: Page, name: 'Background', segment: 'background' } 
]; 

@NgModule({ 
    declarations: [], 
    imports: [ 
    IonicModule.forRoot(MyApp, {}, {links}) 
    ], 
    bootstrap: [], 
    entryComponents: [], 
    providers: [] 
}) 

活字タイプの定義:フレームワークのイオンでルート「背景」をIZE https://github.com/michael-zapata/web-ext-types

関連する問題