2012-01-04 3 views
0

기본적으로 MacRuby (objective-c) 응용 프로그램은 기본적으로 특정 웹 사이트 (광산)를 여는 웹 브라우저입니다.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

아마 내가 여기 큰 그림을 오해하고 있습니다. 첫째, 왜 왜 웹뷰를 만들었습니까? 그 목적은 무엇입니까? – jkh

+0

내 웹 기반 채팅룸 앱의 GUI 래퍼입니다. 누군가가 chatroom에 링크를 게시 할 때 chatroom에서 다른 페이지로 이동하여 작은 800 x 400px 채팅 창에 표시하는 대신 해당 링크를 사용자의 기본 브라우저에서 열어 보겠습니다. – Andrew

관련 문제