source.htmlとdest.htmlの2つのHTMLページがあります
- source.htmlで、いくつかのボタンを作成します(開始、停止、一時停止...)
- dest.htmlで、簡単な時計を作成します。
これらのボタンの1つをクリックするたびに、ソースはdestにメッセージを送信します。処理された後、結果(押されたボタンに基づく)がソースに返送されます。iframeを試しましたが、うまくいきませんでした。クライアントサーバーモデルを使用しない提案はありますか?
source.htmlとdest.htmlの2つのHTMLページがあります
これらのボタンの1つをクリックするたびに、ソースはdestにメッセージを送信します。処理された後、結果(押されたボタンに基づく)がソースに返送されます。iframeを試しましたが、うまくいきませんでした。クライアントサーバーモデルを使用しない提案はありますか?
ウィンドウが独立している場合(サーバーへの要求なし)、これを行う方法はありません。両方のウィンドウがどの種類のフレームでもない場合。セキュリティ上の理由から。
ただし、source.htmlからdest.htmlウィンドウを作成する場合は、ウィンドウの変数(window.open)を作成してウィンドウを管理し、OPENERオブジェクトを使用してsource.htmlウィンドウを管理できます。
メッセージを送信する方法は2つあります。
ソースでdest.htmlに送信するフォームを作成し、メソッドが「GET」であることを確認します
ボタンをクリックすると、メッセージの値を設定し、フォームを送信します
// document.getElementById('message')。value='HELLO';のようなもの document.getElementById('form')。submit();
2a。フォームを作成する必要はありません。source.htmlボタンをクリックしてハードコードされたURLでリダイレクトできます。
window.location = 'dest.html?message=somemessage';
送信すると、dest.htmlファイルが開き、ページのURLにメッセージが表示されます。
var url = window.location + "";
//複数のパラメータがある場合は、ループして単一の配列に格納する必要があります。
var message = url.substr((url.indexOf('=')+ 1)); alert(メッセージ);
2番目の方法 未試行。ボタンがsource.htmlをクリックしたときにCookieに保存し、dest.htmlのCookieを読み取ります。
実際、できます。window.postMessage()
メソッドを使用してみてください。さらに、メッセージを投稿したい場合は、イベントリスナーを作成する必要があります。
この参照の手順に従ってください