2017-03-27 10 views
0

私のクロムエクステンションには2つの状態があります: 1.ローカルサイト(別のドメイン)に認証データがありますので、メインウィンドウを表示する必要があります。 2.認証データがないので、ログインとパスワードの形式でウィンドウを表示する必要があります。chrome extensionからsiteのlocalStorageにアクセスできますか?

認証データが提示されるかどうかを定義するために、私は彼のlocalStorageをチェックしたいと思いますが、不可能と思われます。

ただし、chrome.storage.local.getchrome.storage.local.setは、拡張のlocalStorageに対して完全に機能します。

他のサイトのlocalStorageにアクセスする方法がありますか?

+3

で例えば

はい。 https://developer.chrome.com/extensions/content_scripts –

答えて

1

はい、ページ上のスクリプトを実行してローカルストレージにアクセスすることができます。これには、コンテンツスクリプトや注入スクリプトなど、さまざまな方法があります。

私は、をasync/awaitに使用しています。 popup.js

document.addEventListener('DOMContentLoaded', async() => { 
    try { 
     const key = "foobar" 

     // Get the current tab 
     const tabs = await chrome.tabs.query({ active: true, currentWindow: true }); 
     const tab = tabs[0]; 

     // Execute script in the current tab 
     const fromPageLocalStore = await chrome.tabs.executeScript(tab.id, { code: `localStorage['${key}']` }); 

     // Store the result 
     await chrome.storage.local.set({[key]:fromPageLocalStore[0]}); 
    } 
    catch(err) { 
     // Log exceptions 
    } 
}); 
+0

私が理解する限り、私はlocalStorageやクローズドタブのクッキーにアクセスできないのですか? –

+0

@EugeneShmorgunあなたはページのコンテキストでコードを実行することに頼っていますが、そのコンテキスト外のそのサイトに対してコードを実行することはできません。新しいタブを作成してその中でコードを実行することができます。 – Keith

+0

私はちょうどルールを理解しようとしています。私は自分のサイトで承認した場合(特定のドメインのページにcookieとlocalStorageがあることを意味します)、content_script経由でこのデータにアクセスできますか? –