Ich möchte einen Musik-Player auf der Startseite platzieren (vielleicht sogar jede Seite innerhalb der gleichen Anwendung/Domäne) und Lieder beim Laden von Dokumenten spielen. Der Benutzer kann jedoch mehr als eine Instanz der Seite öffnen, die diesen Player zur gleichen Zeit enthält.Kommunikation zwischen mehreren Benutzer geöffneten Fenstern mit der gleichen URL
Also, wenn der Benutzer die Windows w1, w2, w3 mit der gleichen URL geöffnet, wie nur ein Fenster Songs gleichzeitig abspielen lassen? Zum Beispiel, w1 spielt, w2 und w3 nicht. Und wenn w1 geschlossen ist, sollten w2 und w3 in der Lage sein, dieses Ereignis zu finden, und dann zum Abspielen von Liedern wählen, und nur der Gewinner kann Lieder spielen.
Update: nach den geben Hinweisen, ich denke, das sollte in der Lage zu arbeiten:
// LOGICAL CODE
// Cookie["playerId"] - record which player instance is running
// Cookie["lastRefreshTime"] - record the running player last update time
// when running player instance is destoried (window is closed), and timeout,
// the left player instances should be able to modify Cookie["playerId"] for running.
function Palyer(){
this.playerId = randomString();
var _this = this;
this.refreshHandle = setInterval(function(){
// non-running players to check whether timeout, then competing
if(Cookie["playerId"] != _this.playerId
&& sysTime - Cookie["lastRefreshTime"] > 1000*2){
// competing for run, may have small probability going wrong
Cookie["playerId"] = _this.palyerId;
}
// running player to update timestamp for avoding timeout
if(Cookie["playerId"] == _this.playerId){
Cookie["lastRefreshTime"] = sysTime;
if (!_this.isInitialized()) {
_this.init();
}
}
}, 1000);
...
}
var player = new Player();
Kurze Antwort, können Sie nicht! Lange Antwort, wenn die neuen Fenster durch das erste Fenster geöffnet werden, das Sie kontrollieren können, und eine Art Flag an die geöffneten Fenster weiterreichen kann, wenn der Benutzer gerade entscheidet, die selbe Seite zehn Mal zufällig zu öffnen, gibt es nicht viel, was Sie können Machen Sie nichts anderes, als vielleicht einen Cookie zu setzen oder lokalen Speicher zu verwenden, um zu sehen, dass die Seite bereits geöffnet wurde, aber dann müssen Sie diesen Wert erneut auf window.unload usw. entfernen und alles wird sehr unzuverlässig schnell. – adeneo