如何强制WebView在默认浏览器中打开链接?

时间:2012-01-04 16:28:00

标签: objective-c webkit webview macruby

我正在编写一个MacRuby(objective-c)应用程序,它基本上是一个默认打开特定网站(我的)的网络浏览器。

但是,我不想在WebView中打开链接。我宁愿他们在用户的默认浏览器中打开。这是我到目前为止的代码,但它似乎没有调用decidePolicyForNavigation方法。

framework "WebKit"

class AppDelegate
    attr_accessor :window

    def applicationDidFinishLaunching(notification)
        load_web_view
    end

    def load_web_view
        web_view = WebView.new
        request = NSURLRequest.requestWithURL(NSURL.URLWithString("http://example.com"))
        web_view.mainFrame.loadRequest(request)
        window.contentView = web_view
        web_view.frameLoadDelegate = self
        web_view.setPolicyDelegate(self)
    end

    # this makes it so links open in the default browser
    def webView(view, decidePolicyForNavigationAction:actionInformation, request:request, frame:frame, decisionListener:listener)
        puts 'running nav policy'
        listener.ignore
        NSWorkspace.sharedWorkspace.openURL(request.URL)
    end
end

我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您的目标是使用用户的默认浏览器打开URL,则不希望直接使用WebKit - 您希望使用LaunchServices API。见http://developer.apple.com/library/mac/#documentation/Carbon/Reference/LaunchServicesReference/Reference/reference.html