背景:MUI+VUE開發app;
實現功能:頁面初始化后input自動聚焦;
聚焦方法:mui('.XXX')[0].focus();
問題:大部分頁面自動聚焦成功,小部分頁面自動聚焦偶爾成功;
猜測一 > 頁面未加載完成時執行聚焦方法?
處理方式1:將聚焦方法放在“mui.plusReady”最后面;
處理方式2:添加延時setTimeout(function(){},2000);
處理方式3:使用Vue的自定義指令,在input添加v-focus;
directives:{
focus:function(el){
el.focus();
}
}
以上方式均不起效果,還是偶爾成功。
猜測二 > mui.openWindow()打開頁面過多,mui('.XXX')[0]找不到dom元素
處理方式4:使用document.getElementById('XXX').focus();
處理方式5:關閉其他頁面
var otherPage= plus.webview.getWebviewById('otherPage.html');
plus.webview.close(otherPage);
成功了!!
關閉其他已打開頁面,頁面回退就有問題,所以不能這樣修改。
計划獲取通過plus.webview.currentWebview()獲取頁面中的‘XXX’對象進行處理,但是plus.webview.WebviewObject對象中沒有。
-------------------------------------------分割線---------------------------------------------------
最終解決方式:修改上級頁面js部分的跳轉按鈕事件綁定代碼
修改前:mui('.js-confirm')[0].addEventListener('tap', function() {});
修改后:mui('body').on('tap','.js-confirm',function(){}),如下圖:
總結:很難想到聚焦失敗的原因,不是當前頁面的js影響,而且受到上級頁面的js跳轉按鈕事件綁定方式影響,
不知道算不算是mui的bug。
待聚焦頁面js部分代碼: