cocoa webview链接被禁用

时间:2011-09-16 22:00:06

标签: objective-c cocoa webview

在OSX上,我使用XCode制作一个带有webview的桌面应用程序。 webview加载正常,我可以动态地将内容加载到其中 - 但是当我点击webview中的链接时,它们不会被跟踪。它们会改变颜色,但不会加载新页面。如果我用这样的javascript编写我的链接 - 那么它们就可以了。

<a href='http://x/' onClick="window.location = this.href">link there</a>

是否有一个Objective-C one liner,允许在Web视图中跟踪链接?

我还有其他问题吗?

2 个答案:

答案 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];
    //}
}