【发布时间】:2017-12-13 22:00:54
【问题描述】:
我正在开发由 Objective-C 编码的 iOS 混合应用程序。我想在 UIWebView 中捕获“window.open”事件。我找到了这段代码。
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if (navigationType == UIWebViewNavigationTypeLinkClicked ){
NSLog(@"opening link");
return NO;
}
....
...
return YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString * test = [webView stringByEvaluatingJavaScriptFromString:@"window.open = function (open) { return function (url, name, features) { window.location.href = url; return window; }; } (window.open);"];
//
NSLog(@"test:%@", test); << always print blank
....
...
..
}
info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
但它不仅会捕获“window.open”,还会捕获其他链接事件。有些答案建议使用'stringByEvaluatingJavaScriptFromString',但我不明白。
你能解释一下让初学者容易理解吗?我只想在 UIWebView 中捕获“window.open”事件。
【问题讨论】:
标签: ios objective-c iphone uiwebview window.open