Mise à jour vers une solution moderne, en laissant l'ancienne ci-dessous pour des raisons historiques.
Vous pouvez utiliser l'API du canal de diffusion pour envoyer et recevoir des messages. https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API
// Connection to a broadcast channel
const bc = new BroadcastChannel('test_channel');
// Example of sending of a very simple message
// It doesn't have to be a string, it could be a JS object
bc.postMessage('This is a test message.');
Pour recevoir le message :
// A handler that only logs the event to the console:
bc.onmessage = function (ev) {
console.log(ev);
}
et pour fermer le canal :
// Disconnect the channel
bc.close();
IL S'AGIT D'UNE ANCIENNE MÉTHODE HISTORIQUE, UTILISEZ LA MÉTHODE CI-DESSUS POUR LES NAVIGATEURS MODERNES !
Vous pouvez communiquer entre les fenêtres du navigateur (et les onglets aussi) en utilisant des cookies.
Voici un exemple d'émetteur et de récepteur :
expéditeur.html
<h1>Sender</h1>
<p>Type into the text box below and watch the text
appear automatically in the receiver.</p>
<form name="sender">
<input type="text" name="message" size="30" value="">
<input type="reset" value="Clean">
</form>
<script type="text/javascript"><!--
function setCookie(value) {
document.cookie = "cookie-msg-test=" + value + "; path=/";
return true;
}
function updateMessage() {
var t = document.forms['sender'].elements['message'];
setCookie(t.value);
setTimeout(updateMessage, 100);
}
updateMessage();
//--></script>
récepteur.html :
<h1>Receiver</h1>
<p>Watch the text appear in the text box below as you type it in the sender.</p>
<form name="receiver">
<input type="text" name="message" size="30" value="" readonly disabled>
</form>
<script type="text/javascript"><!--
function getCookie() {
var cname = "cookie-msg-test=";
var ca = document.cookie.split(';');
for (var i=0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(cname) == 0) {
return c.substring(cname.length, c.length);
}
}
return null;
}
function updateMessage() {
var text = getCookie();
document.forms['receiver'].elements['message'].value = text;
setTimeout(updateMessage, 100);
}
updateMessage();
//--></script>
2 votes
La lecture automatique de l'audio est mauvaise quoi qu'il arrive. Pourquoi ne pas laisser les utilisateurs cliquer sur un bouton "lecture" et mettre manuellement en pause l'autre onglet s'ils se trouvent dans cette situation ?
8 votes
Il n'y a pas de jeu automatique. Mais ce serait bien si l'utilisateur n'avait pas à mettre manuellement en pause l'autre onglet. Youtube fait cela par exemple (avec flash)
5 votes
+1 Bonne question, je suis en train de résoudre ce problème exact dans mon application de chat sur le site web.
0 votes
stackoverflow.com/questions/19125823/
0 votes
Il existe d'autres options, comme les webworkers partagés et l'événement de stockage local...
1 votes
Poste de qualité. Toujours utile après 5 ans.
0 votes
Voir cette bibliothèque