2017-06-24 10 views
-1

每次頁面收到​​websocket事件時,它都會播放通知聲音。問題是,如果用戶有10個這些標籤打開,所有10個標籤將播放聲音。javascript:在所有標籤中運行代碼

因此,無論如何只有一次,所有標籤中運行此代碼,無需修改服務器端代碼?

socket.on('notification', function(){ 
    playSound(); // this will run on every tab, which is annoying 
}); 

回答

0

This answer有關標籤間通信的問題可能是一個好的開始。

一旦你在標籤之間有一種可靠的溝通方式,你可以指定一個標籤作爲「領導者」,並只在該標籤中播放聲音。如果領導人去世,剩下的人可以通過談判選出一位新的領導人。例如,您可以爲每個標籤分配一個長隨機ID,而最低ID的標籤可以成爲新的「領導者」並承擔播放聲音的責任。