在浏览器中打开WebView URL [英] Open WebView URL in Browser

查看:213
本文介绍了在浏览器中打开WebView URL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我做了一个非常简单的Swift应用程序,加载其上有链接的网页。每当我点击链接,他们不打开。



这是我的实现:

  import Cocoa 
import WebKit

class ViewController:NSViewController {

@IBOutlet weak var webView:WebView!

override func viewDidLoad(){
super.viewDidLoad()
let urlString =URL
self.webView.mainFrame.loadRequest(NSURLRequest (string:urlString)!))
}

override varresentObject:AnyObject? {
didSet {
//更新视图(如果已加载)。
}
}
}


解决方案>

首先,将 WebView 的政策委托和您的初始网址设为类别变数:

  let url = NSURL(string:http://www.google.com/)! 

// ...

override func viewDidLoad(){
super.viewDidLoad()

//任何其他设置后加载视图。

self.webView.policyDelegate = self

self.webView.mainFrame.loadRequest(NSURLRequest(URL:self.url))
}

然后,重写代理方法拦截导航。

  override func webView(webView:WebView !, decisionPolicyForNewWindowAction actionInformation:[NSObject:AnyObject] !, request:NSURLRequest !, newFrameName frameName:String !, decisionListener listener:WebPolicyDecisionListener!){
println (__LINE__)//需要该方法,println用于调试
}


override func webView(webView:WebView !, decisionPolicyForNavigationAction actionInformation:[NSObject:AnyObject]! ,请求:NSURLRequest !, frame:WebFrame !, decisionListener listener:WebPolicyDecisionListener!){
如果request.URL!.absoluteString == self.url.absoluteString {//加载初始页面
listener.use ()//在应用程序中加载页面
} else {//所有其​​他链接
NSWorkspace.sharedWorkspace()。openURL(request.URL!)//使用户离开应用程序其默认浏览器
}
}


I made a very simple Swift application that loads a webpage with links on it. Whenever I click the links, they do not open. How would I got about having the links on the loaded .html webpage open in a browser window for OS X?

Here is my implementation:

import Cocoa
import WebKit

class ViewController: NSViewController {

    @IBOutlet weak var webView: WebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        let urlString = "URL"
        self.webView.mainFrame.loadRequest(NSURLRequest(URL: NSURL(string: urlString)!))
    }

    override var representedObject: AnyObject? {
        didSet {
            // Update the view, if already loaded.
        }
    }
}

解决方案

First, set your WebView's policy delegate and your initial URL as a class variable:

let url = NSURL(string: "http://www.google.com/")!

// ...

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    self.webView.policyDelegate = self

    self.webView.mainFrame.loadRequest(NSURLRequest(URL: self.url))
}

Then, override the delegate methods to intercept navigation.

override func webView(webView: WebView!, decidePolicyForNewWindowAction actionInformation: [NSObject : AnyObject]!, request: NSURLRequest!, newFrameName frameName: String!, decisionListener listener: WebPolicyDecisionListener!) {
    println(__LINE__) // the method is needed, the println is for debugging
}


override func webView(webView: WebView!, decidePolicyForNavigationAction actionInformation: [NSObject : AnyObject]!, request: NSURLRequest!, frame: WebFrame!, decisionListener listener: WebPolicyDecisionListener!) {
    if request.URL!.absoluteString == self.url.absoluteString { // load the initial page
        listener.use() // load the page in the app
    } else { // all other links
        NSWorkspace.sharedWorkspace().openURL(request.URL!) // take the user out of the app and into their default browser
    }
}

这篇关于在浏览器中打开WebView URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆