我在我的窗口中有一个 WebView,它加载一些 HTML,我希望知道每当我点击创建窗口的链接时,它是弹出窗口还是“新标签页”链接(即在 标记中使用target="_blank"属性)。 这是我的代码的一些部分: 类初始化时: [mainWebView setUIDelegate:self]; [mainWebView setPolicyDelegate:self]; 在同一个类中的更深层次,代理的实现: - (WebView*)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request { NSLog(@"The request is %@", request); return sender; } - (void)webView:(WebView *)webView decidePolicyForNewWindowAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(NSString *)frame decisionListener:(id<WebPolicyDecisionListener>)listener { NSLog(@"New window!"); } 因此,每当创建新窗口(弹出或新标签页链接)时,都会调用createWebViewWithRequest回调,这是正常的。但是无论是什么类型的链接,decidePolicyForNewWindowAction都不会被调用。 似乎有一个名叫here的人和我有同样的问题,但我仍然找不到任何解决方法。
对我而言,decidePolicyForNewWindowAction: 可以很好地处理 target="_blank" 链接。如果您展示更多的代码(最好是一个示例项目),我会尝试将其与我的版本进行比较(当然,如果您仍然需要这个)。:)
createWebViewWithRequest
,非常感谢。另外我也遇到了decidePolicyForNewWindowAction
没有触发的问题,但是我却触发了decidePolicyForNavigationAction
。原因是我的<a>
标签并没有直接跳转页面,而是触发了一些 JS 代码,最终执行了类似于window.location = xxx
的操作,所以导致了decidePolicyForNavigationAction
被触发而不是decidePolicyForNewWindowAction
。不确定你是否也遇到了同样的情况。 - Marson Mao