如何通过在WKWebView中更改location.href来防止打开外部应用程序?

时间:2017-07-01 09:52:01

标签: swift wkwebview

E.g。全球速卖通。如果我已经安装了aliexpress应用程序 - 它通过单击网站上的链接运行,使用javascript代码:location.href = aliexpress://.....

我需要通过调用app-scheme://手动打开UIApplication.shared.openURL(),但不需要通过WKWebView自动打开。

2 个答案:

答案 0 :(得分:0)

您需要为链接上发生点击时要打开的特定应用加载URLScheme。 您将获得更多信息this url

如果您想阻止打开该应用程序然后监视链接,请单击此WKWebView的委托方法

decidePolicyForNavigationAction

修改

要拦截将在应用程序之外打开的任何URL,请创建UIApplication类的子类并覆盖OpenURL方法。在此方法中,您可以检查URL并确定要在应用程序之外打开的URL。

不要忘记在申请中为您指定新班级作为校长班级。

答案 1 :(得分:0)

很可能外部URL被抛出到 createWebViewWith Configuration:方法。 检查一次,将WKUIDelegate设置为self,

webview.UIDelegate = self

然后实现以下委托并正确处理URL加载,

public func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? 
    {
           //check the URL, either block it or handle it here.
            webView.load(navigationAction.request)
            return nil
    }

Refer: Apple Docs