2018年2月1日星期四
- 最近接近一年一直都在做Hybrid App,開發(fā)起來問題非常的多漩符,而且大部分都是非常規(guī)問題一喘。今天就記錄一個非常規(guī)問題。UIWebView調用后之前正常工作的js無法觸發(fā)嗜暴。
[self.webview goBack];
- 經過前端和后端的艱難排錯和調試凸克,最后定位于:每次調用goBack后[與js的history.go(-1)同],UIWebView后退后(前進同樣)會刷新一遍,既執(zhí)行一次reload方法闷沥,這樣會造成UIWebView界面有個問題萎战,在靜態(tài)頁面寫死的元素和事件都會被刷掉,動態(tài)添加的數據和元素并無此問題舆逃。
- 問題被定位出來了就好找解決方案了
- 1.IOS層面解決UIWebView后退/前進刷新的問題
[[NSUserDefaults standardUserDefaults] setInteger:2 forKey: @"WebKitCacheModelPreferenceKey"];
//這里是調用的私有api蚂维,
//把WevView類的cacheModel設置成WebCacheModelPrimaryWebBrowser,
//因為這個上架被拒絕的人可不在少數路狮,這里需要進行特殊處理虫啥。
id webView = [self.webview valueForKeyPath:@"_internal.browserView._webView"];
id preferences = [webView valueForKey:@"preferences"];
[preferences performSelector:@selector(_postCacheModelChangedNotification)];
0-1
- 2.js修改寫法,把元素寫成動態(tài)去添加奄妨。