場景
app webView物件,開啟一個H5頁面,該H5點選一個按鈕,會進行頁面跳轉
但是開啟了一個新的標籤頁,並且顯示為about:blank
如果是用瀏覽器進行相同操作,流程正常進行
解決
檢視該H5頁面原始碼:
function f() {
$('.boton_azul').on('click', function (e) {
popupBank = window.open('about:blank', popupName)
popupBank.focus()
})
}
透過window.open()開啟空白標籤頁,並且返回該物件,最後展示該頁面。
由於只能看到這段程式碼,無法檢視popup物件的處理函式,可以進行猜測:
利用了postMessage()進行標籤頁通訊,將新的Url地址傳給了popup,popup監聽到資料傳輸後進行頁面跳轉
大致實現:
const popup = window.open('about:blank')
const changePopUpUrl = () => {
popup.addEventListener('message', (event) => {
const { data } = event
popup.location.href = data
})
popup.postMessage('https://www.baidu.com', '*')
popup.focus()
}
changePopUpUrl()
最後因為Webview沒有做多標籤頁,所以開啟新的標籤頁就會覆蓋掉舊的webview,導致無法對popup物件進行處理