㈠ 把HTML5的手機網站嵌入安卓APP中,發現<input type='file' />的上傳按鈕功能失效,點擊沒有任何反應
安卓APP的WebView默認屏蔽了該控制項的使用,有些安卓APP之所以能支持文件選擇和上傳,主要可能是有可能採取了如下措施之一:
(1)可能在該APP中重寫了相關方法(http://stackoverflow.com/questions/5907369/file-upload-in-webview)
(2)提供了js Bridge來供web頁面調用
所以,單從前端技術上是解決不了這個問題的。
這個問題之所以不太好排查,一方面跟手機端的圖片上傳功能我不太常用到有很大關系,另一方面也因為見到一些其它的APP容器能支持該功能,所以思維在習慣上已經形成定勢,誤以為這是WebView默認就支持的。
末了,順便提醒一句,下次進行類似功能的需求評審,別忘了先了解下相應的APP容器是否支持該功能,如果沒有,則需要找到相應的客戶端開發同學評估一下工時,以免造成影響項目進度的風險
㈡ 手機切換到後台h5頁面js不運行
在html5中document新增了一個事件 visibilitychange,這個事件在頁面前台或後台切換時被觸發,你所說的問題就簡單了,它也有個對應的屬性visibilityState,用於檢測當前頁面的狀態值為hidden還是visible。
解法是,在hidden時記錄當前時間,在visible時用當前時間減去之前記錄的時間就為當前倒計時需要減去的時間,這也就不需要和後台溝通了,或者你直接在visible時刷新頁面也行,下面是小樣,你測試一下
var b=getTime();
function getTime()
{
return Date.now();
}
document.addEventListener('webkitvisibilitychange',function()
{
if(document.webkitVisibilityState=='hidden')
{
b=getTime();
}else
{
document.body.appendChild(document.createTextNode('間隔:'+(getTime()-b)))
}
})
document.addEventListener('mozvisibilitychange',function()
{
if(document.mozVisibilityState=='hidden')
{
b=getTime();
}else
{
document.body.appendChild(document.createTextNode('間隔:'+(getTime()-b)))
}
})
㈢ 關於Oppo、Vivo手機低於Android 7.0版本WebView中JS不執行,CSS載入異常的問題
項目中出現一個兼容性問題,Oppo、Vivo手機Webview載入本地JS、CSS不執行
一、前提 OV手機低於android 7.0版本,
二、baseUrl是Https的
三、使用: webView.loadDataWithBaseURL(baseUrl, html, "text/html; charset=UTF-8", "utf-8", null) 方法載入
解決辦法
還有一種不太好的解決辦法: webView.loadDataWithBaseURL(null, html, "text/html; charset=UTF-8", "utf-8", null)
但是這樣會導致頁面內不是完整路徑的圖片找不到。