DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JavaScript使用focus()設置焦點失敗的解決方法
JavaScript使用focus()設置焦點失敗的解決方法
編輯:關於JavaScript     

昨天修改機頂盒上面的EPG頁面,遇到一個小問題。用戶購買游戲時需要彈出購買確認對話框,對話框的默認焦點規定必須停留在“取消”按鍵上。很簡單的需求,使用JavaScript的focus()方法就可以實現了。簡單的代碼示例如下:

document.getElementById("cancel").focus()

但是苦逼的是,機頂盒真是一個大坑。由於要兼容所有現存的機頂盒型號,需要對8款機頂盒進行適配。然後就出現問題了!一款中興B600的機頂盒完全沒法將焦點設置到取消按鍵上。以下是我的解決思路:

首先確認該機頂盒是否支持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()); 
}

但是就是很奇怪!以上兩步的結果表明該機頂盒支持focus()和getElementById(),但是就是無法設置焦點到彈出的對話框中。

前前後後折騰了一個多小時,最後大BOSS出現了,就簡單說了一句話就解決了這個問題!有可能要主動調用flur()將原來的焦點取消掉!

document.getElementById("purchase").flur()

然後就解決了這個問題。不得不感概!在解決這個問題的過程中,自己的思路其實還是蠻正確的,但知識面顯然不夠。一般程序員和高級程序員的差距除了解決問題的思路方面,也有經驗和知識面的差距!

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved