Windows Phone:按下后退按钮时IE或Edge中缺少模糊事件

时间:2013-06-07 10:20:50

标签: internet-explorer windows-phone microsoft-edge windows-10-mobile

以下方案与Windows Phone设备(IE或Edge)相关。

情景1:

如果输入元素具有焦点且软键盘已启动,则按下硬件后退键会使聚焦元素模糊并按原样弹出键盘。但是,没有相应的模糊事件被触发。

情景2:

如果输入元素具有焦点并且软键盘处于启动状态,则在输入元素外部点击会使聚焦元素模糊,弹出键盘并触发模糊事件。

问题:

当按下硬件后退键并且输入元素具有焦点时,是否有办法使模糊事件触发?

HTML重现问题:

<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="width=device-width, user-scalable=no" />
        <title>Blur Test</title>
    </head>
    <body>
        <p>Blur Test</p>
        <input type="text" onblur="alert('onblur');">
    </body>
</html>

使用addEventListener会产生相同的结果。

在诺基亚Lumia 620上测试。操作系统版本:8.0.10211.204

编辑:

在诺基亚Lumia 640上测试过。操作系统版本:8.10.15148.160(Windows Phone 8.1 Update 2 - Internet Explorer 11)

在诺基亚Lumia 635上测试过。操作系统版本:10.0.10586.29(Windows 10移动版 - Microsoft Edge 13)

2 个答案:

答案 0 :(得分:3)

因此,在进一步调查后,我将使用'deactivate'事件而不是'blur'事件。

'deactivate'事件看起来像是IE特定的,至少除了MSDN之外我找不到任何文档。

答案 1 :(得分:0)

是的,当您按下硬件后退按钮时,文本框仍然是聚焦的。

我们可以为此设置解决方法..当文本框聚焦时,即使按下硬件后退按钮,也可以触发模糊。

当您点击文本框并调整窗口大小时,软键盘会启动。因此,您必须捕获屏幕调整大小事件,并且每次软键盘启动或关闭时都可以执行此操作,即软键盘启动或关闭时屏幕大小会发生变化。

您必须为此编写JavaScript代码,并且应该在

下编写

$(文件).ready function

$(window).resize(function () {
        var screenWidth = screen.width;
        var screenHeight = screen.height;
        var orientation = window.orientation;
        var switchCase = "portrait";

        if (orientation == 0 || orientation == 180) {
            switchCase = "portrait";
        } else if (orientation == 90 || orientation == -90) {
            switchCase = "landscape";
        }
        if (focusedSearchedBox) {
            if (switchCase == "portrait") {
                if ($(window).height() > (screenHeight * (2 / 5))) {
                    var searchBox = '#' + focusedSearchedBox.id;
                    $(searchBox).blur();
                   }                 
                } 
                else {
                if ($(window).height() > (screenWidth * (2 / 5))) {
                    var searchBox = '#' + focusedSearchedBox.id;
                    $(searchBox).blur();
                   }                
                }
        }

    });
每次点击文本框并在Focus事件调用上设置变焦focusedSearchedBox时,都会调用

和Focus事件。

它对我有用。