【问题标题】:JavaScript key hooking issue on Chrome and OperaChrome 和 Opera 上的 JavaScript 键挂钩问题
【发布时间】:2012-10-31 14:08:28
【问题描述】:

我正在使用 HTML5 和 JavaScript 做一个视频界面网络。

我在使用 JavaScript 时遇到问题,因为我需要使用按键来控制视频,因此当有人从键盘上按下某个键(例如“P”)时,视频将处于“播放”或“暂停”状态。 问题是它不能在 Chrome 和 Opera 上运行,但在 Firefox 上运行。

以下摘录是总代码的一部分:

HTML:

<video width="775" id="player" preload controls timeupdate="timeupdate()"  onclick="repro()" onMouseOver="mostrarControles()" onMouseOut="ocultarControles()">
    <source src="video.mp4" type="video/mp4" />
    <source src="video.theora.ogv" type="video/ogg" />
    <source src="video.webmvp8.webm" type="video/webm" />
    TU NAVEGADOR NO SOPORTA VIDEO EN HTML5.
</video>
<div id="controls" onMouseOut="ocultarControles()" onMouseOver="mostrarControles()" >
    <!-- Buttons of control-->
</div>

Java.JS - 我在 Chrome 和 Opera 上遇到问题的函数:

document.getElementById("controls").addEventListener('keydown',function(event) {
    controlTeclado(event);
    //alert("OK");
}, true);

我检测到 Chrome 和 Opera 无法访问 .addEventListener() 内部,我不知道为什么,知道吗?

ProgressBar.JS:

function controlTeclado(evento) {
    mostrarControles(); // show controls on the web page
    if (evento.keyCode==80) {
        alert(" Key: "+evento.keyCode);
        repro(); //play video
    }
}

【问题讨论】:

  • 您是否在控制台中收到错误消息?如果有,它说明了什么?
  • Javascript 在 chrome 和 opera 上运行良好,所以我编辑了你的标题。
  • @ColBeseder,控制台上没有错误信息,只是没有拿钥匙。

标签: javascript html google-chrome opera


【解决方案1】:

&lt;div&gt; 元素默认不接收按键事件。只有诸如表单输入和 contenteditable 元素之类的可聚焦元素才可以。要使常规 &lt;div&gt; 能够触发键事件,请为其分配 tabIndex(值为零表示该元素处于常规 Tab 键顺序):

<div id="controls" tabindex="0"
        onMouseOut="ocultarControles()" onMouseOver="mostrarControles()">
    ...
</div>

【讨论】:

  • 我已尝试使用该选项,但它在 Chrome 和 Firefox 上也无法正常工作。我还有另一个要求将关键点放在播放器上。 'document.getElementById("player").addEventListener('focus',function(event) { controlTeclado(event); }, true); '
  • 我在
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多