窗口焦点和模糊事件在Android浏览器上无法正常工作

时间:2012-02-17 15:22:10

标签: javascript android javascript-events onblur onfocus

我发现,当连接到窗口,文档或正文时,javascript焦点和模糊事件在Android浏览器上无法正确触发。

我想要一个在桌面浏览器上正常运行的简单测试脚本,但在Android股票浏览器,Dolphin和Opera mobile上都失败了:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
    <title>Focus test</title>

    <script type="text/javascript">

        window.onfocus = function() {
            document.getElementById('console').innerHTML += '<div>Focus event handler fired.</div>';
        };
        window.onblur = function() {
            document.getElementById('console').innerHTML += '<div>Blur event handler fired.</div>';
        };

    </script>
</head>

<body>
    <input id="test" name="test" />
    <div id="console"></div>
</body>

</html>

有趣的是,如果表单输入获得焦点,则事件处理程序将触发,并且在模糊时,模糊事件处理程序将触发两次。

有没有人有这个好的解决方案或解决方法?

编辑:预期的结果是,如果我更改浏览器标签或更改为其他应用,则应触发模糊事件,如果我返回浏览器标签,则焦点事件应该触发(它在桌面上的工作方式)

1 个答案:

答案 0 :(得分:0)

我刚刚在Galaxy Nexus运行的软糖(我所有的)上测试了你的代码,这段代码非常完美,两个事件每次都会触发。

document.getElementById('test').onfocus = function() {
    document.getElementById('console').innerHTML += '<div>Focus event handler fired.</div>';
};
document.getElementById('test').onblur = function() {
    document.getElementById('console').innerHTML += '<div>Blur event handler fired.</div>';
};​

可能是您瞄准的窗口,在大多数移动设备上,通常不会“模糊”本身。确保您直接要求元素报告自己的模糊和焦点事件。

修改 此外,确保在应用事件侦听器之前等待DOM准备就绪。