我正在编写一个小型 Web 应用程序,它大量使用 canvas 元素来执行类似于 VNC 的操作。它特别针对 iOS 和 Android 的默认浏览器。
我可以通过 AJAX 调用检测何时需要键盘输入,但我无法说服移动浏览器按需显示其软键盘。我的想法是有一个输入字段,也许隐藏在画布后面,我可以在适当的时候给予焦点,然后监听该输入字段上的关键事件。
问题是,当它来自“后台”时,即在 AJAX 调用的成功处理程序上,这似乎不起作用。这是一个独立的测试用例(需要 jQuery,并使用安装在/focus
)显示焦点在来自移动浏览器时如何不会弹出移动浏览器的键盘setTimeout
延迟或 AJAX 调用的返回。有什么办法可以让键盘有效弹出吗?
<html>
<head>
<title>Focus Test V1</title>
</head>
<script type="text/javascript" src="jquery.js"></script>
<body>
<div>
<form method="GET" onsubmit='return false;'>
<input type="text" id="kb" />
</form>
</div>
<div>
<button id="focus-direct">Focus Directly</button>
<button id="focus-timeout"">Focus Timeout</button>
<button id="focus-ajax">Focus Ajax</button>
<button id="clear">Clear</button>
</div>
<div id="console"></div>
<script type="text/javascript">
function init() {
function append(text) {
$('<div/>').text(text).appendTo('#console');
}
$('#clear').click(function() {
$('#console').html("");
});
$('#focus-direct').click(function() {
focusKB();
});
$('#focus-timeout').click(function() {
setTimeout(focusKB(), 50);
});
$('#focus-ajax').click(function() {
append("sending...");
$.ajax( {
url : '/focus',
success : function() {
append("ajax returned...");
focusKB();
}
});
});
function focusKB() {
$('#kb').focus();
append("focusing...");
}
setTimeout(focusKB, 3000);
}
$(document).ready(init);
</script>
</body>
</html>
不幸的是,在大多数情况下,系统会测试用户是否触发该事件(例如单击)以显示软件键盘。这使得无法按需显示软键盘。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)