如何使webview只加载像youtube这样的特定网站?

时间:2017-08-14 18:48:39

标签: html swift webview youtube

我是Swift的新手,我正在制作一个可以显示youtube视频的webview应用。我的问题是我不希望我的用户转到另一个网址或类似的东西。我想让我的应用程序加载youtube.com。我使用HTML而不是URL,因为我可以告诉我的webview它将具有什么样的高度和宽度。

HTML code:

<html><head><style type=\"text/css\">body {background-color: transparent;color: white;}</style></head><body style=\"margin:0\"><iframe frameBorder=\"0\" height=\"" + String(describing: height) + "\" width=\"" + String(describing: width) + "\" src=\"http://www.youtube.com/embed/" + vid.videoId + "?showinfo=0&modestbranding=1&frameborder=0&rel=0\"></iframe></body></html>

1 个答案:

答案 0 :(得分:0)

您可以尝试使用shouldStartLoadWith

UIWebViewDelegate委托方法
extension UIViewController: UIWebViewDelegate {

    public func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        let url = request.url?.absoluteString ?? ""

        print("WebView shouldStartLoadWithRequest url -> \(url)")

        if !url.contains("youtube.com") {

            // avoid loading strange urls..
            // manage error as you need..
            webView.stopLoading()

            return false
        }
        return true
    }
}

请务必在UIViewController方法中将UIWebView设为viewDidLoad代理:

override func viewDidLoad() {
    super.viewDidLoad()

    myWebView.delegate = self
}