寫本文目的
之所以寫本文,是因爲之前在android機頂盒上處理過焦點的問題。目前看到很多IPTV的盒子中,展示的界面不再使用native app,也是因爲工作需要,所以嘗試看了一下。
默認情況下,在Android系統中會自行處理這個焦點問題。在之前接觸過的幾個平臺的系統中,發現對於Html5的支持不夠理想。Android4.2系統採用webkit內核,在Android4.4之後換成了Chromium內核,這個內核的改進,對於html5的支持力度明顯優化很多,但是通過html5test網站測試結果仍然不夠好。谷歌的Chrome對於Html5的支持度還不多,但是發現遙控器完全無法控制界面,所以交給Android自己來處理也不是一個很好的辦法,修改Android源碼的工作量也必然是很龐大的。
html界面遙控器怎麼操作
毫無疑問,這是個問題。然後自己昨天花了點兒時間測試了一下,發現在UI中元素有限的情況下,通過javascript代碼來控制按鍵行爲也是一種方法。下面是自己寫的一個測試demo:
<script>
$(function() {
$("button[name='but1']").focus();
$('button').css("width", "100px");
$("button[name='but1']").click(function() {
$("button[name='but1']").css("background-color", "red");
});
$("button[name='but2']").click(function() {
$("button[name='but2']").css("background-color", "blue");
});
});
//使用jQuery監聽當前的按鍵值
$(document).on('keydown', function(e) {
//alert(e.which);
switch (e.which) {
case 37:
//keyCode left
//alert(document.activeElement.id);
//判斷當前獲取焦點的元素方法1
var actId1 = document.activeElement.id;
if(actId1 == 'but2') {
$("button[name='but1']").focus();
}
//判斷當前獲取焦點的元素方法2
/*var isFocus=$("#but2").is(":focus");
alert(isFocus);*/
break;
case 38:
// key code up
break;
case 39:
//keycode right
console.log("right arrow key pressed!");
var ha = document.hasFocus();
var actId = document.activeElement.id;
if(actId == 'but1') {
$("button[name='but2']").focus();
}
break;
case 40:
//keycode down
break;
}
});
//使用js監聽當前的按鍵值方法
/*
window.onkeydown = function() {
alert(window.event.keyCode)
}*/
</script>
<body>
<button name="but1" id="but1">button1</button>
<button name="but2" id="but2">button2</button>
</body>
代碼很簡單,只是一種思路,可能比較侷限,有更好的想法歡迎交流下。。。