JavaScript使用focus()設(shè)置焦點失敗的解決方法
昨天修改機頂盒上面的EPG頁面,遇到一個小問題。用戶購買游戲時需要彈出購買確認(rèn)對話框,對話框的默認(rèn)焦點規(guī)定必須停留在“取消”按鍵上。很簡單的需求,使用JavaScript的focus()方法就可以實現(xiàn)了。簡單的代碼示例如下:
document.getElementById("cancel").focus()
但是苦逼的是,機頂盒真是一個大坑。由于要兼容所有現(xiàn)存的機頂盒型號,需要對8款機頂盒進行適配。然后就出現(xiàn)問題了!一款中興B600的機頂盒完全沒法將焦點設(shè)置到取消按鍵上。以下是我的解決思路:
首先確認(rèn)該機頂盒是否支持getElementById()方法以及是否成功獲得了ID為“cancel”的元素:測試方法很簡單,直接另寫了一個 <p id="test">test</p> ,然后在同樣的地方獲取ID為“test”的元素,并進行了簡單的操作document.getElementById("test").innerHTML="Hello"
最后使用了“try...catch(e)...”捕捉“focus()”失敗的原因
try(){
<span style="white-space:pre"> </span>document.getElementById("cancel").focus()
}catch(e){
<span style="white-space:pre"> </span>alert(e.name + ": " + e.what());
}
但是就是很奇怪!以上兩步的結(jié)果表明該機頂盒支持focus()和getElementById(),但是就是無法設(shè)置焦點到彈出的對話框中。
前前后后折騰了一個多小時,最后大BOSS出現(xiàn)了,就簡單說了一句話就解決了這個問題!有可能要主動調(diào)用flur()將原來的焦點取消掉!
document.getElementById("purchase").flur()
然后就解決了這個問題。不得不感概!在解決這個問題的過程中,自己的思路其實還是蠻正確的,但知識面顯然不夠。一般程序員和高級程序員的差距除了解決問題的思路方面,也有經(jīng)驗和知識面的差距!
相關(guān)文章
Highslide.js是一款基于js實現(xiàn)的網(wǎng)頁中圖片展示插件
這篇文章主要介紹了Highslide.js是一款基于js實現(xiàn)的網(wǎng)頁中圖片預(yù)覽查看工具,需要的朋友可以參考下2007-05-05
PixiJS學(xué)習(xí)之Sprite類的使用詳解
Sprite 直譯為 “精靈”,是游戲開發(fā)中常見的術(shù)語,就是將一個角色的多個動作放到一個圖片里,通過裁剪局部區(qū)域得到當(dāng)前的角色狀態(tài)圖。本文主要介紹了PixiJS中Sprite類的使用,需要的可以參考一下2023-02-02
JavaScript 中使用Promise.all()方法經(jīng)驗技巧詳解
這篇文章主要為大家介紹了JavaScript 中使用Promise.all()方法經(jīng)驗技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10
JavaScript實現(xiàn)2種常見的抽獎效果實例代碼
抽獎系統(tǒng)是一種常見的功能,可以用于各種活動和網(wǎng)站,這篇文章主要給大家介紹了關(guān)于JavaScript實現(xiàn)2種常見的抽獎效果的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01

