這個內容社區里都有,用的是個集合算是比較全的了,記錄一下我用這個時的坑
mui.plusReady(function() {
setTimeout(function(){
initNativeObjects();
showSoftInput();
},50)
})
var initNativeObjects = function() {
if (mui.os.android) {
console.log(1)
var main = plus.android.runtimeMainActivity();
var Context = plus.android.importClass("android.content.Context");
InputMethodManager = plus.android.importClass("android.view.inputmethod.InputMethodManager");
imm = main.getSystemService(Context.INPUT_METHOD_SERVICE);
setTimeout(function() {
//此處可寫具體邏輯設置獲取焦點的input
var inputElem = document.querySelector("input")
inputElem.focus();
inputElem.parentNode.classList.add('mui-active');
}, 100);
} else {
console.log(2)
nativeWebview = plus.webview.currentWebview().nativeInstanceObject();
setTimeout(function() {
//此處可寫具體邏輯設置獲取焦點的input
var inputElem = document.querySelector("input")
inputElem.focus();
inputElem.parentNode.classList.add('mui-active');
}, 100);
}
};
var showSoftInput = function() {
var nativeWebview = plus.webview.currentWebview().nativeInstanceObject(); //這個代碼變量的使用時為了防止有一些手機鍵盤彈不起來
if (mui.os.android) {
console.log(3)
plus.android.importClass(nativeWebview);
nativeWebview.requestFocus();
imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);
} else {
console.log(4)
nativeWebview.plusCallMethod({
"setKeyboardDisplayRequiresUserAction": false
});
document.querySelector('input').focus();
}
setTimeout(function() {
//此處可寫具體邏輯設置獲取焦點的input
var inputElem = document.querySelector("input")
inputElem.focus();
inputElem.parentNode.classList.add('mui-active');
}, 100);
};
這段代碼理論上安卓ios通用
但是,這個但是就是我的坑
這個進入頁面的跳轉事件,
一定要用mui自帶的點擊事件,否賊,進入頁面自動彈起鍵盤ios是不好使的
我以前使用的是
document.getElementById('input1').addEventListener('tap', function() {
mui.openWindow({
})
}); 這個不行
必須要用
mui(document).on("tap","#input1",function(){
mui.openWindow({
})
})
友情提示,
現在更新的越來越惡心,
如果確定使用mui開發,切記一切東西最好用mui封裝好的,要不項目出問題了你都不知道啥原因
例如,最新的HbuliderX中jq的$.ajax請求算是跨域,發請求必須要用mui.ajax,要不不報錯,程序也不執行,就在那卡着,