3

Nexus Player附带DPad (蓝牙遥控器)。它的方向键就像键盘上的标准上/下/左/右按钮。多亏了这一点,您可以像从标准 PC/Mac 一样导航 HTML 编写的应用程序(webview) 。DPad还有一个选择按钮,webview 将其检测为Enter键。按Enter/Select键适用于标准按钮href链接,但不适用于复选框单选按钮

方向键说明

PC 上的单选按钮复选框仅在按下Space键时更改状态。不幸的是,DPad没有Space键。让这个工作的诀窍是:

  1. 检测是否按下了任何键:onkeydown
  2. 检测是否按下了 Enter/Select 键:if(event.keyCode == 13){}
  3. 模拟单击复选框/单选按钮:this.click()
  4. 防止按下 Enter/Select 时提交表单的默认操作:event.preventDefault()

这给了我们一个纯粹用JavaScript编写的简单的“hack”,它与AngularJS一起工作:onkeydown="if (event.keyCode == 13) {this.click(); event.preventDefault()}"

在我的情况下,复选框元素如下所示:

<input ng-change="MyFunction()"
       ng-model="MyVariables"
       ng-required="!MyVariables"
       name="MyRadioButton"
       id="MyRadioButton"
       value="MyValue"
       type="radio"
       onkeydown="if (event.keyCode == 13) {this.click(); event.preventDefault()}"/> 

注意:您也可以更改复选框或单选按钮的状态,this.checked但在我使用AngularJS的情况下,这不起作用(ng-change 或 ng-click 不会注意到以编程方式对复选框/单选按钮进行的​​更改)

所以,我的问题来了。有没有更多“正确”的方法来实现这一目标?

4

0 回答 0