4
我正在編寫一個小型的Web應用程序,它大量使用canvas元素來做類似於VNC的事情。它特別針對iOS和Android的默認瀏覽器。如何獲取移動瀏覽器(iOS中的webkit,Android)顯示其軟鍵盤
當需要鍵盤輸入時,我可以通過AJAX調用檢測到,但我無法說服移動瀏覽器按需顯示其軟鍵盤。我的想法是有一個輸入字段,可能隱藏在畫布後面,我可以在適當時關注焦點,然後在該輸入字段上監聽關鍵事件。
問題在於,當它來自「背景」時,即在AJAX調用的成功處理程序上時,它似乎不起作用。這裏是一個自包含的測試用例(需要jQuery,並使用安裝在/focus
上的虛擬ajax處理程序),它顯示了延遲時間或返回時的焦點不會彈出移動瀏覽器的鍵盤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>
這就是我的實驗似乎暗示,但我希望有一個很好的伎倆來解決這個問題。 – CarlG 2010-11-17 17:29:40