オプション ページで新しいオブジェクトを作成するときに「小さな」問題が発生します。
オプション ページで、いくつかのオブジェクトを作成し、それらを一般設定として保存します。これらのオブジェクトには、さまざまな API と通信する方法があります。しかし、それらのオブジェクトの 1 つを操作するようになるとすぐに、現在のページのコンテキストが失われます。
例えば:
オプション ページ メソッド 'request' を持つオブジェクトを作成し、このメソッドを使用して ajax リクエストを API に送信します。他のページでこれを呼び出すと、ajax リクエストがオプション ページに記録されます。オプション ページを閉じると、作成されたログのすべてのコンテキストが失われます。
現在のページへのコンテキスト参照を強制する方法はありますか? または、間違ったページにオブジェクトを作成/保存して、それらを必要とするページでそれらを取得するのを間違えましたか? (IEは、ページ自体にオブジェクトを作成するために必要なデータのみを保存する必要がありますか?(これは同じことのオーバーヘッドがかなりあるようです(?))。
前もって感謝します。
編集
オブジェクトを作成するオプション ページがあり、それを MyApi と呼びます。新しい MyApi を作成し、 chrome.storage.local に保存します。ユーザーがいくつかのテキストを選択してコンテキスト メニューをクリックすると、選択したテキストを表示する新しいページ (selectedText.html) が開き、いくつかの API 呼び出しが行われます。これは主に ajax 要求です。selectedText.html のストレージからオブジェクトを取得し、MyApi でリクエストを行った瞬間、ajax リクエストのネットワーク タブにもコンソール ログにもログが表示されません。しかし、オプションページを開くと、そこにすべてが表示されます。
EDIT2
save : function()
{
var obj = {'api':this.data};
chrome.storage.local.set(obj,function() { if(chrome.runtime.lastError) console.warn(chrome.runtime.lastError); });
}
これはバックグラウンド スクリプトにあります。