【问题标题】:webView decidePolicyForNavigationAction for opening a link in a default browserwebView 决定PolicyForNavigationAction 用于在默认浏览器中打开链接
【发布时间】:2012-03-16 20:12:48
【问题描述】:

我正在编写的基于 Web 的聊天客户端的 GUI 包装器出现问题。基本上,当有人在聊天室中发布链接时,我想在点击时在默认浏览器中打开。我正在使用 webkit 决定PolicyForNavigationAction。

- (void)webView:(WebView *)sender decidePolicyForNavigationAction:(NSDictionary *)actionInformation
    request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id <WebPolicyDecisionListener>)listener 
{
NSString *host = [[request URL] host];

    if (![host hasSuffix:@"chatsimply.com"])
    {
        [listener ignore];
        NSWorkspace * ws = [NSWorkspace sharedWorkspace];
        [ws openURL:request.URL];
    }

        [listener use];
}

这似乎没有在聊天室中看到链接,我不知道为什么。我一直在搜索一些论坛和 Apple 文档,但运气不佳,因此非常感谢任何有关如何处理此问题的帮助/文档。

【问题讨论】:

    标签: objective-c macos webview


    【解决方案1】:

    如果您的意思是在 Safari 中打开链接,那么应该这样做。

    [[UIApplication sharedApplication] openURL:request.URL];
    

    如果链接没有突出显示(或者您要做什么),那么我建议 NSLogging 主机字符串以查找它是否具有您想要的后缀。

    【讨论】:

    • 我可以很好地打开链接,主要问题是,当我单击已发布在聊天室(例如 apple.com)中的链接时,它并没有向该代表发出信号:已选择链接。如果我更改默认 URL,我会从 chatsimply 加载到 google,它会在我的默认浏览器中打开。但是,当我在 chatsimply 聊天室中选择一个链接时,我什至在记录主机 URL 时都看不到该链接。
    • 哦,这就是你的意思。对不起,我没有答案。不过祝你好运。 :)
    • @ACMacalister 你有没有为动态添加的链接解决过这个问题?我仍然遇到同样的问题,代理没有触发在初始页面加载后添加的动态链接。
    • @Luke 不,我没有,我最终使用了 macgap 项目,它应该可以正常工作,您可能可以用作参考。 github.com/maccman/macgap
    猜你喜欢
    • 2011-07-26
    • 2011-05-12
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多