2016-12-09 60 views
0

現在我使用visibilitychange事件來查看哪個瀏覽器選項卡處於活動狀態。我使用活動選項卡來觀察服務器端的一些事件,並且我不想在所有打開的選項卡中運行此觀察器。Javascript。檢查是否沒有焦點標籤

但是現在我想運行這個監視器,即使沒有選項卡焦點,但仍然只在一個選項卡中。

如何檢查是否沒有選項卡焦點並確保某個腳本僅在一個背景選項卡中運行?

回答

1

你必須解決標籤之間通信的問題。有幾個選項:

  1. 餅乾
  2. 本地存儲
  3. 服務器端同步(的WebSockets,阿賈克斯池等)

每個選項卡將在共享的數據中心,以更新其狀態(以上之一)。

一旦完成,您應該使用主選擇算法來決定選項卡中的哪一個應該與服務器進行通信。就你而言,這可能與第一個打開的標籤一樣簡單。

使用本地存儲時有一些怪癖,例如兩個不同的子域不能訪問相同的本地存儲。 Cookie也是您可以定義父域的另一種方式。我想說的第三個選擇是調試和添加更復雜的選擇邏輯的最佳選擇。