From Evernote: |
PerPageHTML Calendar 不會換日問題修正 |
剛接手了一支 iPhone 4,發現 JB 後可以安裝 PerPageHTML 就能有類似 hTc 時鐘的 widget!
嗯,畫面果然不錯~
除了 hTc 時鐘,還有Calendar widget。
但是,過了一天就發現 Calendar 不會自動換日,但是時鐘卻很正常。
用 iFile 檢查了 Calendar code 後,發現這不知道從哪裡拿來用的 Calendar (會不會是直接拿 dashboard widget?),本來就都有用 setTimer 寫好 update timer 在換日時作用,只是不知道為什麼在 PerPageHTML 下不會作用。但是 hTc 時鐘卻告訴我們,在 PerPageHTML 下 setInterval 是正常的。
作了幾個簡單的測試,發現
- setTimer 沒有作用
- setInterval 30min 也不會動作
- 但是 setInterval 1sec 卻可以正常動作
既然有了這個測試結果,我也懶得去深究原因。(雖然猜測大概是 PerPageHTML 的 Renderer 並沒有一直在執行 Calendar widget)簡單改了一下 Calendar 後,發現會正確換日了,實測也沒有耗電的現象。
所以,在此做個紀錄、收工~
我修改了
1. 在 Widget.html body 加入 setInterval 呼叫 updateDate
<span id='date'>
<script language="JavaScript">setInterval('updateDate()', 1000)</script>
</span>
2. 修改 Canlendar.js 的 updateDate
function updateDate ()
{
gDate = new Date();
var currentEqualDate = gDate.getMonth() == gBrowsingMonth &&
gDate.getFullYear() == gBrowsingYear &&
gDate.getDate() == gBrowsingDate;
if (!currentEqualDate)
{
gBrowsingMonth = gDate.getMonth();
gBrowsingYear = gDate.getFullYear();
gBrowsingDate = gDate.getDate();
drawGrid (gBrowsingMonth, gBrowsingYear);
drawHiliteTodayInGrid ();
drawText ();
}
}