2012-01-04 14 views
0

私はMacRuby(objective-c)アプリケーションを作成しています。これは基本的に、デフォルトで特定のWebサイト(私)を開くWebブラウザです。WebViewでデフォルトのブラウザでリンクを開く方法

ただし、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 

私は間違っていますか?

答えて

0

LaunchServices APIを使用する場合は、ユーザーのデフォルトブラウザでURLを開くだけの目的なら、WebKitを直接使用する必要はありません。 http://developer.apple.com/library/mac/#documentation/Carbon/Reference/LaunchServicesReference/Reference/reference.html

+0

LaunchServices APIを使用すると、私の 'NSWorkspace.sharedWorkspace.openURL(request.URL) 'の代わりになりますか?私はまだこれらの外部リンクがWebView内で開くのを防ぐ必要があり、私の "ポリシー方法"は呼び出されません。私が間違っていることを知っていますか? – Andrew

+0

多分私はここで大きな写真を誤解しています。まず、なぜあなたはwebviewを作成していますか?その目的は何ですか? – jkh

+0

私のWebベースのチャットルームアプリケーションのGUIラッパーです。誰かがチャットルームにリンクを投稿したときに、チャットルームから離れて800 x 400pxの小さなチャットウィンドウにそのページを表示するのではなく、そのリンクをユーザーのデフォルトブラウザで開くことを望みます。 – Andrew

関連する問題