手機網頁的倒數計時

更新於 2024/11/20閱讀時間約 2 分鐘
很多網站,都要求前端工程師要做出在手機跟電腦上都能順利顯示的介面。這種自動調整手機跟桌機的技術,叫做 Responsive web design (RWD)。
Image by Patrick Skrbinjek from Pixabay
若是要抓手持裝置的 event,不能用 onmousedown 之類的 event,因為它的操作介面不是 mouse。Apple 跟 Android 的瀏覽器,加了 ontouch 系列的 event,諸如 ontouchstart, ontouchmove, ontouchend, ontouchcancel 等四個 event。
倒數計時的時間計算,電腦上因為是多工,所以離開瀏覽器跑別的程式時,Javascript 程式會繼續跑;而在手持裝置上,可能為了省電之類的原因,不在畫面的瀏覽器,Javascript 不會繼續跑。
若是跟時間有關的網頁就有可能產生問題。例如 Javascript 程式若用遞減迴圈計算倒數計,當瀏覽器不在畫面上時,Javascript 就會停止,而再切回瀏覽器時,再從停止處開始跑。這種狀況,就會讓倒數計時變得不準。
華南銀行個人網銀的倒數計時
以上圖的華南銀行 HTML 頁面為例,它用 frame 切出版面,將 Javascript 寫成的倒數計時器放在最上面的 frame 中。因為它倒數計時,就是用迴圈遞減,所以離開瀏覽器後,迴圈就停止計算了。
將它修改,不用迴圈遞減的方式來做,改成抓 timestamp 的方式來處理,將倒數計時的時間,跟 timestamp 做計算。當瀏覽器切到背景後,Javascript 停止;但它切換回前景後,利用 timestamp 的時間減去程式一開始跑的時間,用戶會覺得計時器有在持續跑,沒有停過。
Javascript 提供的 timestamp 跟 UNIX 的 timestamp 不同,Javascript 準確到千分之一秒,而不是 UNIX 的秒。所以要計算秒數要除一千,並捨棄餘數。
mytime = Math.floor(Date.now() / 1000);
為了調高效能,引用了 or 運算,將小數點後的餘數刪掉 (偷 stackoverflow 上面的程式來用)
mytime = Date.now() / 1000 | 0;
最後的範例程式長這樣:
即將進入廣告,捲動後可繼續閱讀
為什麼會看到廣告
avatar-img
2會員
26內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
WILSON PENG的沙龍 的其他內容
要計算字串的 MD5 checksum,在 Shell 下用這樣的指令應該就可以了 但是,它怎麼跟 PHP 的 md5 函數算出來的不同!! 雖然是不同的程式語言,但同樣的字串,用同樣的演算法,應該都相同呀!
星海爭霸比戰術;英雄聯盟比控兵;部落衝突比陣形。在部落衝突遊戲中,防守要佈陣,攻擊也要擺陣。 這是一款手機遊戲,在手機上,不適合做精準的操控。於是 SUPERCELL 公司就設計了用佈陣為主的遊戲。遊戲設計為金幣升級建築、紫水升級科技、黑油升級英雄。 傳統的大本營,有五個工匠,負責全部建築的建設跟
相信很多電玩迷,尤其是毀滅戰士迷 (DOOMer),看到這個標題會發出會心的一笑,因為它是個人電腦上最出色的電動遊戲。 DOOM 是由 ID Software 公司所發行的電動遊戲。它的前身是德軍總部(Wolfstein 3D),後因市場反應熱烈而出了 DOOM 這款電玩。 使用者面對一個非常立體的
在 Linux 系統中,設定 crontab 可以讓程式在某個時間點重跑。但要怎麼確定它真的在設定的時間重跑呢?
寫程式時,遇到要將數字變數的正負值顛倒過來 (例如 55 變成 -55、-66 變成 66),這時該怎麼做?
用 PHP 程式來修正 RSS 裡的語法解析錯誤。 一些新聞訊息之類的網站提供 RSS (Resource description framework Site Summary, 簡易資訊聚合),以 XML (Extensible Markup Language, 可延伸標記式語言) 語法的格式
要計算字串的 MD5 checksum,在 Shell 下用這樣的指令應該就可以了 但是,它怎麼跟 PHP 的 md5 函數算出來的不同!! 雖然是不同的程式語言,但同樣的字串,用同樣的演算法,應該都相同呀!
星海爭霸比戰術;英雄聯盟比控兵;部落衝突比陣形。在部落衝突遊戲中,防守要佈陣,攻擊也要擺陣。 這是一款手機遊戲,在手機上,不適合做精準的操控。於是 SUPERCELL 公司就設計了用佈陣為主的遊戲。遊戲設計為金幣升級建築、紫水升級科技、黑油升級英雄。 傳統的大本營,有五個工匠,負責全部建築的建設跟
相信很多電玩迷,尤其是毀滅戰士迷 (DOOMer),看到這個標題會發出會心的一笑,因為它是個人電腦上最出色的電動遊戲。 DOOM 是由 ID Software 公司所發行的電動遊戲。它的前身是德軍總部(Wolfstein 3D),後因市場反應熱烈而出了 DOOM 這款電玩。 使用者面對一個非常立體的
在 Linux 系統中,設定 crontab 可以讓程式在某個時間點重跑。但要怎麼確定它真的在設定的時間重跑呢?
寫程式時,遇到要將數字變數的正負值顛倒過來 (例如 55 變成 -55、-66 變成 66),這時該怎麼做?
用 PHP 程式來修正 RSS 裡的語法解析錯誤。 一些新聞訊息之類的網站提供 RSS (Resource description framework Site Summary, 簡易資訊聚合),以 XML (Extensible Markup Language, 可延伸標記式語言) 語法的格式
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
iPhone 因其美觀外形、品質與使用體驗而受到廣大使用者喜愛, 全球的蘋果迷數量龐大。每年 iOS 推出新版本後,許多用戶都熱切期待體驗新功能, 蘋果在滿足用戶需求方面做得相當出色。 然而,有些小問題如 iPhone 發燙、訊號差等,也讓使用者感到困擾。 今天我們要討論的是 iPhon
Thumbnail
這篇文章提供印尼旅遊手機上網攻略,分享作者在雅加達的經驗,包括購買SIM卡、註冊觀光用遊客SIM卡,以及開通網路包等流程及注意事項。
Thumbnail
前言 上一篇討論到如何訓練出模型,此篇將說明Streamlit建立的簡單Web應用程式的解說 Streamlit網頁App_貓狗辨識 連結 程式碼Github連結 [機器學習]CNN學習MNIST 手寫英文字母資料,用網頁展現成果_模型訓練篇 如何連動github與stramlit可以參考
Thumbnail
streamlit與github連動程式庫,呈現即時預測手寫英文字母 整理了一下,先前學的機器學習利用Colab來訓練出能辨識手寫A~Z英文字母的模型,使用的模型是CNN(Convolutional Neural Network,CNN)模型 訓練好的模型,當然是要拿來應用,成果呈現
最近手機壞了,去訂了iPhone 15 等了2個月還沒來,於是拿一隻舊手機來用,它這一隻只能打電話跟接電話如果要安裝app的話,手機記憶體容量就不夠了。 所以想把手機網路分給第三隻舊空機更舊2013年了,期望第三隻手機就拿來一般上網、追劇用。 一般來說只要開熱點就好,可是如果隔一間房或者樓上樓下
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
iPhone 因其美觀外形、品質與使用體驗而受到廣大使用者喜愛, 全球的蘋果迷數量龐大。每年 iOS 推出新版本後,許多用戶都熱切期待體驗新功能, 蘋果在滿足用戶需求方面做得相當出色。 然而,有些小問題如 iPhone 發燙、訊號差等,也讓使用者感到困擾。 今天我們要討論的是 iPhon
Thumbnail
這篇文章提供印尼旅遊手機上網攻略,分享作者在雅加達的經驗,包括購買SIM卡、註冊觀光用遊客SIM卡,以及開通網路包等流程及注意事項。
Thumbnail
前言 上一篇討論到如何訓練出模型,此篇將說明Streamlit建立的簡單Web應用程式的解說 Streamlit網頁App_貓狗辨識 連結 程式碼Github連結 [機器學習]CNN學習MNIST 手寫英文字母資料,用網頁展現成果_模型訓練篇 如何連動github與stramlit可以參考
Thumbnail
streamlit與github連動程式庫,呈現即時預測手寫英文字母 整理了一下,先前學的機器學習利用Colab來訓練出能辨識手寫A~Z英文字母的模型,使用的模型是CNN(Convolutional Neural Network,CNN)模型 訓練好的模型,當然是要拿來應用,成果呈現
最近手機壞了,去訂了iPhone 15 等了2個月還沒來,於是拿一隻舊手機來用,它這一隻只能打電話跟接電話如果要安裝app的話,手機記憶體容量就不夠了。 所以想把手機網路分給第三隻舊空機更舊2013年了,期望第三隻手機就拿來一般上網、追劇用。 一般來說只要開熱點就好,可是如果隔一間房或者樓上樓下