【发布时间】:2014-07-24 15:05:13
【问题描述】:
早上好,
我有一个加载指向http://localhost:8888 的 url 的 mac webView(不是 iOS UIWebView)。加载的 html 包含链接和 iframe,但是当加载 iframe 或单击链接时,主页会尝试加载 http://localhost:8888/%E2%80%9Chttp://example.com%E2%80%9D,然后重新加载原始页面 http://localhost:8888.。更奇怪的是,打开的链接或 iframe 确实会尝试加载 http://localhost:8888/%E2%80%9Chttp://example.com%E2%80%9D。
我尝试使用 decisionPolicyForNavigationAction 处理此问题,但 [request URL] 值以这种方式到达并解析它以提取嵌入的 url 似乎有点骇人听闻。
关于为什么 webView 以这种方式构建 url 以及如何正确处理加载 iframe 和链接的任何想法?
- (void)webView:(WebView *)webView
decidePolicyForNavigationAction:(NSDictionary *)actionInformation
request:(NSURLRequest *)request
frame:(WebFrame *)frame
decisionListener:(id <WebPolicyDecisionListener>)listener
{
NSLog(@"Navigating to %@", [request URL]); // returns http://localhost:8888/%E2%80%9Chttp://example.com%E2%80%9D
[listener use];
}
- (void)webView:(WebView *)webView
decidePolicyForNewWindowAction:(NSDictionary *)actionInformation
request:(NSURLRequest *)request
newFrameName:(NSString *)frameName
decisionListener:(id < WebPolicyDecisionListener >)listener {
if ([actionInformation objectForKey:WebActionElementKey]) {
// Happens here also :(
NSLog(@"Opening in browser %@", [request URL]);
[[NSWorkspace sharedWorkspace] openURL:[request URL]];
}
}
【问题讨论】:
-
如果没有 HTML 本身就很难判断,我猜这是导致此问题的原因。 HTML 上的 iframe 是如何设置的,该 iframe 中的链接是如何设置的?
-
当 WebView 上的标准链接时会发生这种情况,例如。
<a href="http://www.google.com">google</a>被单击或当 js 插入 html 以创建 iframe 时,例如。<iframe src="http://www.google.com"></iframe>进入 WebView :S
标签: macos cocoa iframe webview