MUI 頁面加載完成后,自動聚焦指定input元素問題解決


背景: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部分代碼:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM