1

私のWeb拡張機能で、ユーザーが現在見ているWebサイトにAJAX呼び出しを行うことができます。現在のウェブサイトには、エンドポイントが/foo/bar?query=であることがわかります。Firefox WebExtensions API AJAXを現在のタブウェブサイトに呼び出す方法

このエンドポイントに連絡するのにfetch APIまたはXMLHttpRequestを使用できないことはありますか?

私の拡張機能をデバッグしようとしている間、これらの方法を使用しようとすると、サーバーエラーが発生し、ネットワークタブに何も表示されないことがわかります。このタスクのためのWebExtensions APIがあるはずですが、見つけられません。

+0

トピックになる質問を編集してください:問題を複製する[mcve]を含めてください。 Chrome拡張機能やFirefox WebExtensionsの場合は、* manifest.json *や背景/コンテンツ/ポップアップスクリプト/ HTMLの一部を含むことがほとんどです。 (1)望ましい動作、(2)特定の問題またはエラー、および(3)それを再現するために必要な最短のコードを含める必要があります。質問自体に*。また、[ここで私はどのような話題を聞くことができますか?](http://stackoverflow.com/help/on-topic)、[ask]を参照してください。 – Makyen

答えて

1

browser.tabs.getCurrent()を使用すると、ユーザーが現在見ているタブを表すオブジェクトを取得できます。このオブジェクトにはurlというプロパティがあり、これを使用してXMLHttpRequestを作成できます。

browser.tabs.getCurrent().then(currentTab => { 
    let xhr = new XMLHttpRequest(); 
    xhr.open("GET", currentTab.url); 
    // ... 
}); 

編集:
Makyenで指摘したように、tabs.currentTabはあなたが望むものを実際にはありません。代わりにtabs.queryactive: trueを使用する必要があります。そのような何か作業をする必要があります:あなたはへのHTTPリクエストを行うことができます例えば

{ 
    ... 
    "permissions": [ 
    "tabs", 
    "<all_urls>" 
    ], 
    ... 
} 

<all_urls>

はクロスオリジン・リクエストを作るために
browser.tabs.query({active: true, currentWindow: true}).then(tabs => { 
    let currentTab = tabs[0]; 
    let xhr = new XMLHttpRequest(); 
    xhr.open("GET", currentTab.url); 
    // ... 
}) 

、あなたはmanifest.jsonファイルに許可を取得する必要があります任意のURL。

hereを読むことができます。

+0

このコードをテストしましたか? XMLHttpRequestを作成しようとするたびに、エラーが発生したようです。 – Harvey

+1

私はそれをテストしていません。しかし、それは動作するはずです。取得したエラーメッセージは何ですか? manifest.jsonに必要な権限を設定しましたか? – Forivin

+1

['tabs.getCurrent()'](https://developer.mozilla.org/en/USAdd-ons/WebExtensions/API/tabs/getCurrent)は、コードが実行されている現在のタブを取得します。ほとんどの場合、拡張オプションページや拡張機能内の他のHTMLページを表示している場合を除き、ユーザが見ているページのURLにはなりません。現在のウィンドウのアクティブなタブに 'chrome.tabs.query({active:true、currentWindow:true}、callback)'を使用したい場合。 – Makyen

関連する問題