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