到目前为止我做了什么:我使用下面的代码在项目的UIWebView中更改User-Agent。
NSDictionary *userAgentReplacement = [[NSDictionary alloc] initWithObjectsAndKeys:userAgent, @"UserAgent",nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:userAgentReplacement];
问题:我有这个代码工作,但是当我再次调用该函数时,要将UserAgent更改为其他内容,UIWebView不会更新。为了成功更新UserAgent,我需要删除/释放UIWebView并再次分配/显示它,但它会导致UIWebView丢失所有历史记录。有没有办法更新UserAgent而不必创建新的UIWebView才能使它生效?
答案 0 :(得分:1)
当您使用NSUserDefaults时,我假设您在
中设置它们application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
我之前使用的替代方案是
NSMutableURLRequest*request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:yourURL]];
[request setValue:userAgent forHTTPHeaderField:@"User-Agent"];
[webView loadRequest:request];
您还可以使用UIWebView Delegate使用NSString变量捕获webview的上次加载状态
-(void)webViewDidFinishLoad:(UIWebView *)webView{
currentConfig=[webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML];
}
然后使用
重新加载webView[webView loadHTMLString:currentConfig baseURL:yourURL];