私は、ブラウザのpostMessageがオブジェクトまたは単なる文字列の送受信をサポートしているかどうかを検出するきちんとした方法を探しています。私はそこの誰かがこれを行う何かを書いているに違いないが、私は解決策を見つけることができていないと考えている。postMessageがオブジェクトを送信できるかどうかを検出しますか?
私はWebWorkerとの間でデータをやりとりするためにpostMessageを使用しています。ブラウザーがワーカーをサポートしているかどうかを検出するのは簡単ですが、postMessage経由でオブジェクトを送信できるかどうかを検出することは困難です。
私は簡単な検出機能を書いています。したがって、ブラウザがそれを使用するオブジェクトの送信をサポートしている場合。文字列のみが許可されている場合、私はJSON.stringify()を使用することに代わることができます。おそらく関数をdojo/hasテストに割り当てます(これは質問/回答には関係ありませんが)。
この問題を解決するために他の人が行ったことはありますか?どんなアドバイスも素晴らしいだろう、私はWebWorkersとpostMessageの両方に新しい。前もって感謝します。
私からのダムの質問 - あなたは 'postMessage'を同じウィンドウにできますか? – Ian
@イアン...何ですか? WebWorkerは(疑似)スレッドを作成するクラスです。あなたは基本的にexternのjavascriptファイルを実行することができますが、そのページのjavascriptは完璧に動作し続けます。 'postMessage'はあなたがそのスレッドと通信できるようにします。それはまったく異なる窓とは関係がありません。 –
最初の文は 'postMessage'でメッセージを送信することについて話します。私は 'postMessage'を調べて、他のウィンドウにメッセージを送ることについて話します(私が覚えているように)。あなたがWeb Workersと話しているという事実を無視して、なぜテストコールを設定しないのですか?私は彼らのコミュニケーションが異なると思っていますが、現在のウィンドウで 'onmessage'のリスナーを設定し、' {} 'を渡すと' typeof'をチェックして文字列ではなくオブジェクトであるかどうかを確認します。 – Ian