2016-11-30 33 views
2

サービススタッフから定期的にAPIを呼び出して、localStorageに格納されたデータを送信したいとします。このデータは、ユーザーが自分のWebサイトを参照するときに生成され、localStorageに保存されます。 localStorageに統計情報を保存し、サービスワーカーを通して定期的に送信するようなことを検討してください。私はこれをどのようにするべきですか?私はサービスワーカーからlocalStorageにアクセスすることができず、postMessage APIを使用する必要があることを理解しています。どんな助けも高く評価されます。サービス担当者からlocalStorageにアクセス

答えて

5

webworkerプロセスからlocalStorage(およびsessionStorage)にアクセスすることはできません。結果はundefinedになります。これはセキュリティ上の理由によるものです。

ワーカーの元のコードに戻ってpostMessage()を使用し、そのコードにlocalStorageにデータを格納する必要があります。

ローカルストレージからデータを保存して取得するには、localStorage.setItem()localStorage.getItem()を使用してください。

もっとに関する情報:

Worker.postMessage()

Window.localStorage

以下の疑似コード、あなたが開始得ることを望ん。

// include your worker 
var myWorker = new Worker('YourWorker.js'), 
    data, 
    changeData = function() { 
    // save data to local storage 
    localStorage.setItem('data', (new Date).getTime().toString()); 
    // get data from local storage 
    data = localStorage.getItem('data'); 
    sendToWorker(); 
    }, 
    sendToWorker = function() { 
    // send data to your worker 
    myWorker.postMessage({ 
     data: data 
    }); 
    }; 
setInterval(changeData, 1000) 
+0

'var myWorker = new YourWorker( 'YourWorker.js')、'> '新しいWebWorker'の権利ですか? – Roberrrt

+0

@Roberrrtあなたのコメントのためにありがとう、正しいです '新しい労働者()' :) – GibboK

+0

ありがとうございますGibboK、しかし、私はいくつかの疑問があります。あなたが言及したコードは、私のjavascriptの1つで動作しています。これを実行するには、ユーザーはWebサイトを実行している必要がありますか?ではない?私は、サービスワーカーがユーザーが自分のウェブサイトにいなくてもローカルストレージから定期的にデータを送信する何かを探しています。私のシナリオも可能ですか? – Faiz

関連する問題