2017-09-30 12 views
0

ユーザーがインデックス上のボタンを押すと、ページを再読み込みしたいと思います。ボタンを押したときに別のページをリロードするにはどうすればよいですか?

ここ

それはどのようなものか...

-index.php

<h1>Press the reload button to reload main.php</h1> 
<a class="btn" id="reload">Reload</a> 

-main.php

<h1>When the button is pressed on index this page should reload.</h1> 

基本的にindex.htmlを上の1〜2つのクレビスがあるはずですし、もう一方はmain.htmlにあります。リロードボタンを押すと、他のデバイスがリロードされます。

コードの不足で申し訳ありませんが、私は見て、これで何も見つかりませんでした。

+1

これは天気の良い仕事ではありません。 2つのデバイスが互いに影響を与えるためには、すべてのトラフィックがサーバーを通過する必要があり、クライアント側JSだけでは不十分であり、両方のデバイスをサーバーイベントと同期させる必要があります。これを行うには、AJAXポーリングかWebSocketを使用する必要があります。これがセットアップされると、Device1がサーバーにリクエストを行うことができます。その後、サーバーは、自身をリフレッシュする必要があることをDevice2に通知する必要があります。前にも述べましたが、ここで設定することがたくさんあります。また、この段階に入る前に書かなければならないコードもたくさんあります。 –

+1

これにはAJAXポーリングなどが必要です。サーバー側のコードを記述する必要があります。 index.phpページは、ボタンが押されたときにサーバコールを行い、サーバ側でインジケータをオンにする必要があります(例えば、DBを通じて行うことができます)。一方、main.phpはサーバからポーリングを続け、インジケータのステータスをチェックする必要があります。インジケータが「オン」になったときにのみリロードする必要があります。 – sribasu

答えて

1

両方のページが同じブラウザで実行されている場合(どちらもプライベートモードではない)、ローカルストレージイベントを使用できます。

document.getElementById('reload').addEventListener('click', function (evt) { 
    window.localStorage.setItem('window-event', JSON.stringify({reload: "main.php"})); 
}); 

とmain.phpで

window.addEventListener('storage', function (evt) { 
    if (evt.key === 'window-event') { 
     var msg = JSON.parse(evt.newValue); 
     if (msg.reload === 'main.php') { 
      window.location.reload(); 
     } 
    } 
}); 

編集:ウェブ労働者はまた、ウィンドウ間でメッセージを交換することができますが、ウェブ労働者が設定し、維持するために、より複雑で、窓の数十があるときに失敗することがあり開いた。

関連する問題