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)文章
js實現(xiàn)選項卡內(nèi)容切換以及折疊和展開效果【推薦】
本文主要介紹了js實現(xiàn)選項卡內(nèi)容切換以及文字折疊和展開效果的示例代碼。具有一定的參考價值,下面跟著小編一起來看下吧2017-01-01Js 獲取當(dāng)前函數(shù)參數(shù)對象的實現(xiàn)代碼
這篇文章主要介紹了Js 獲取當(dāng)前函數(shù)參數(shù)對象的實現(xiàn)代碼,需要的朋友可以參考下2016-06-06淺談js中用$(#ID)來作為選擇器的問題(id重復(fù)的時候)
下面小編就為大家?guī)硪黄獪\談js中用$(#ID)來作為選擇器的問題(id重復(fù)的時候)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02