visibilitychange:API詳解


利用頁面可見性API搞個怪

繼各大站點、博客在用console發招聘、玩游戲、埋彩蛋之后(知乎相關鏈接),小劇似乎又發現了一個好玩兒的東西,目測會火,利用頁面可見性API做些小技倆。

頁面可見性是什么

頁面可見性API通過documentvisibilitychange讓腳本知道用戶是否已經看不到這個頁面了。可以在特定的時候暫緩一些不必要的操作,以減少客戶端、服務端壓力。如一個實時刷新的列表可在頁面不可見的時候暫停請求數據,頁面恢復可見時再繼續請求新數據。

我這里只是簡單介紹,詳細的可以參考Page Visibility API 

看起來很有用的樣紙,目前實際應用呢?

顯然,這一API若是合理的使用起來,會有很多意想不到的好處。但是作為一個相對來說比較新的API,兼容性目前還是需要等待瀏覽器的更新換代。目前也有部分站點用到此API來實現的小功能,當然也只是個逗逼玩意兒。

瀏覽器支持情況

首先來介紹下劇中人寫的的一個搞死程序員的小技倆。

頁面處在可見狀態的時候沒有任何異常,但是當你把頁面切換到其他TAB頁,或者最小化到任務欄的時候瀏覽器title就會寫上“出BUG了,快看!”,作為一個嚴肅的程序員,你是否想看看到底是哪兒出BUG?答案是肯定的,但是當你再次打開小劇的博客時卻發現,一切完好如初。可能到了這個時候你才會意識到:天殺的,竟然被小劇騙了,呃,只不過你來打我啊!

小劇客棧

具體到代碼實現,其實簡單到爆了,也只不過是這一個事件的監聽而已。

document.addEventListener('visibilitychange', function() { document.title = document.hidden ? '出BUG了,快看!':'小劇客棧,劇中人的個人博客!' }); 

另外再提一個有類似猥瑣功能的站點“餓了么”,下面是我從壓縮后的代碼中摳出來的和此功能相關的代碼。

餓了么

var r = "記得回來點單哦! - 餓了么", n = document.title; angular.$(document).on("visibilitychange",function(){ document.title = "hidden"===document.visibilityState ? r : n }) 

當然,如果你也在用或者你發現了有其他站點也在用這個API,不管實現的是這類逗逼交互還是正兒八經的優化,都歡迎拿出來一起討論。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM