I've been messing around in a Kik web app for Android. I noticed that certain events do not fire properly until the user has interacted with the page.
The problem manifests itself in Kik, but it also shows up in the stock web browser on my Galaxy S5 running Android 4.4/KitKat.
HTML
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
click here: <button id="button">a button</button>
<br><br><br>
textbox: <input type="text" id="textbox">
CSS
* {
font-size: 20px;
}
JavaScript
window.onload=function(e) {
// set function to button.click
$('#button').click(function() {
fucus();
});
// run the exact same function rightey-right now
$('#textbox').focus();
// run it again in three minutes
$('#textbox').focus()
};
function fucus() {
$('#textbox').focus();
}
Most mobile browsers do not allow .focus()
to behave as expected unless called from a user-interaction event. For example if you called it in an onclick
event it would work but if called in onload
it will not. This is not specific to Kik but rather mobile browsers in general.