4

到目前为止我所做的:我使用下面的代码来更改项目中 UIWebView 中的 User-Agent。

NSDictionary *userAgentReplacement = [[NSDictionary alloc]           initWithObjectsAndKeys:userAgent, @"UserAgent",nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:userAgentReplacement];

问题:我的代码可以正常工作,但是当我再次调用该函数以将 UserAgent 更改为其他内容时,UIWebView 不会更新。为了成功更新 UserAgent,我需要删除/释放 UIWebView 并再次分配/显示它,但这会导致 UIWebView 丢失所有历史记录。有什么方法可以更新 UserAgent 而无需创建新的 UIWebView 使其生效?

4

1 回答 1

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];
于 2014-01-21T16:38:33.093 回答