以下方案与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)
答案 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事件。
它对我有用。