有兩個常用的方法。諸如 Facebook、Twitter、LinkedIn 等等的 Social website ,每幾秒就有新的內容產生,再把這些被生產內容的相對數字,插入頁籤抬頭,呈現有多少更新。另一個方法,Trello 就直接出現一個紅點 icon 在頁籤上,不顯示數字。
在接下來的範例中,有三種不同的操作:點我看示範 DEMO 看看有哪些不同變化。
# 1 使用文件標題
Facebook & Twitter 都是透過在頁面標題,增加新提示數字。專案開發中,有非常多種檢索資料 - retrieve data- 的方法 ( 可以去請教公司內,友善的工程師 )。在這邊的範例,我們假設去檢索所有更新的數字,並計算可以找到的資料,透過 JavaScript 呈現出來。一開始,我們只有 0 個更新,所以我們把數字加入一個 Variable 裡面。
1
| var count = 0; |
接下來示這段碼的核心,讓我們能夠轉換文件標題。
1
| var title = document.title; |
然後新增一個 function 來改變頁籤標題的 string。
1
2
3
4
5
| function changeTitle() { count++; var newTitle = '(' + count + ') ' + title; document.title = newTitle; } |
這邊可以看到,我們使用 JavaScrip + + Operator。 這個運算會增加 count 的 1 個數字,在每次計算中。 當我們從 0 開始,下一回的計算會吐出 1 。 透過這個 + + Operator 去模擬數字的增加,而不需要去抓任何一隻 API 來提供數字。
接下來新增另一個 function 來跑
changeTitle()
1
2
3
4
5
| function newUpdate() { update = setInterval(changeTitle, 2000); } var docBody = document.getElementById( 'site-body' ); docBody.onload = newUpdate; |
上面假設,在每 2000 毫秒 ( 2 秒) 去檢查更新。changeTitle() 會在每次間隔去執行。
第一個做法直接了當,去檢索需要的數字然後傳到頁籤標題上。
# 2 使用 Favicon
接下來試第二種方法,透過HTML 裡面的 TAG 標籤 Favicon 交換呈現,當檢索到更新時,該 icon 每秒交替另一張。文件如下
1
| < link id = "favicon" rel = "icon" href = "img/favicon.gif?v3" /> |
把新的 favicon 路徑設定到 JavaScript Variable 裡面。
1
| var iconNew = 'img/favicon-dot.gif' ; |
然後還需要兩個 functions
01
02
03
04
05
06
07
08
09
10
11
12
| function changeFavicon() { document.getElementById( 'favicon' ).href = iconNew; } function newUpdate() { update = setInterval(changeFavicon, 3000); setTimeout( function () { clearInterval( update ); }, 3100); } var docBody = document.getElementById( 'site-body' ); docBody.onload = newUpdate; |
第一個 funcion : changeFavicon() 會替換掉初始的 favicon 便成有紅點那個圖。第二個 newUpdate() 會在特定的時間點上執行第一個 function。
第二個方法也不難,比第一個方法的編碼更少、更簡單一點。除此之外,我們可以改變設計變成其他種更有創意的圖案,符合視覺需求。
Note: Chrome 瀏覽器不支援動態 GIF。
# 3 使用 Favico,js
第三個方法,我們使用 Miroslav Magda 開發的一隻 JavaScrtip library : Favico.js 。一開始透過 JavaScript ,我們來定義一個新的 Favico 來定義位置 、動態 、背景顏色等等
1
2
3
4
5
6
| var favicon = new Favico({ position : 'up' , animation : 'popFade' , bgColor : '#dd2c00' , textColor : '#fff0e2' }); |
接下來再加上這幾段 functions
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
| var num = 0; function generateNum() { num++; return num; } function showFaviconBadge() { var num = generateNum(); favicon.badge(num); } function newUpdate() { update = setInterval(showFaviconBadge, 2000); } var docBody = document.getElementById( 'site-body' ); docBody.onload = newUpdate; |
上面的碼,好像跟第一個方法類似。一開始新增一個 function 來模擬更新總數;第二個 function showFaviconBadge() ,把數字插入 icon 中;最後一個 function newUpdate() 則在某個特定的時間區間中,去執行第二支 function,呈現接收到更新的體驗。
結論
上訴三種方法,我們透過瀏覽器頁籤 (browser tab) 當成媒介去提醒 Users。這三種方法不過是一個示範起點,你可以把呈現的方法改造成適合妳的專案應用,你可以蹲在家中廁所絞盡腦汁好好思考,或者是馬上跟我連絡。官方網站: www.tskymicromedia.com
設計總監: 賴善久 James Lai
Skype:kingjames.lai
Mobil: +886 0965-07-9893
email:zambala64@gmail.com