Как заставить WebView открывать ссылки в браузере по умолчанию? - PullRequest
0 голосов
/ 04 января 2012

Я пишу приложение MacRuby (target-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 голосов
/ 05 января 2012

Вы не хотите использовать WebKit напрямую, если ваша цель - просто открыть URL в браузере пользователя по умолчанию - вы хотите использовать API-интерфейсы LaunchServices. Смотри http://developer.apple.com/library/mac/#documentation/Carbon/Reference/LaunchServicesReference/Reference/reference.html

...