在OSX上,我使用XCode制作一个带有webview的桌面应用程序。 webview加载正常,我可以动态地将内容加载到其中 - 但是当我点击webview中的链接时,它们不会被跟踪。它们会改变颜色,但不会加载新页面。如果我用这样的javascript编写我的链接 - 那么它们就可以了。
<a href='http://x/' onClick="window.location = this.href">link there</a>
是否有一个Objective-C one liner,允许在Web视图中跟踪链接?
我还有其他问题吗?
答案 0 :(得分:6)
Gmail顶部的链接在新窗口中打开。要使它们工作,您必须至少实施WebUIDelegate
方法webView:createWebViewWithRequest:
和webViewShow:
。如果您只想在同一网页视图中打开所有链接,则可以从webView:createWebViewWithRequest:
返回,而不是创建新链接。
答案 1 :(得分:0)
原来是因为我有一些代码我从网上复制了一些自定义函数来忽略WebPolicyDecisionListener ......
很抱歉在没有提供所有细节的情况下提出问题 - 所有这些目标-c对我来说都是新的,我不知道哪些位做了什么。我做了一些指点和点击,然后进行了一些编码 - 我不知道究竟是怎么连接起来的。使用其他语言,您可以将整个程序放在一个地方 - 需要一点学习曲线才能适应......但我离题了。
我通过添加一些评论来修复 - 请参阅下面的代码......
- (void)webView:(WebView *)aWebView
decidePolicyForNavigationAction:(NSDictionary *)actionInformation
request:(NSURLRequest *)request
frame:(WebFrame *)frame
decisionListener:(id < WebPolicyDecisionListener >)listener
{
if ([self requestIsLinkClick:actionInformation]) {
if ([@"method" isEqual:[[request URL] scheme]]) {
SEL selector = NSSelectorFromString([[request URL] resourceSpecifier]);
if ([prototypeDelegate respondsToSelector:selector]) {
[prototypeDelegate performSelector:selector];
}
}
// [listener ignore];
} // else {
[listener use];
//}
}