WkWebView不允许在加载后缩放某些网站

时间:2019-03-11 12:29:22

标签: ios objective-c wkwebview zooming

在这里,我以编程方式将WkWebView添加到主视图中,然后在为WkWebView添加此委托之后

self.wkWebView.UIDelegate = self;
self.wkWebView.navigationDelegate = self;
wkWebView.scrollView.delegate = self;

然后逐个加载网站并检查缩放功能,它是针对某个网站进行缩放,而不针对其他网站进行缩放

如果我正在加载 http://www.google.com -那么我可以进行缩放 并且如果我正在加载 https://www.42gears.com https://www.facebook.com -那么,则不允许缩放功能(此网站的所有缩放功能均适用于野生动物园,但不能在WKWebView中工作)

注意:我正在检查iPhone,并且正在使用Objective-C

请帮助我,谢谢。

2 个答案:

答案 0 :(得分:1)

我在这里评估Javascript的缩放功能,在这里您需要在 didFinishNavigation 方法中添加它。因此使用它可以解决此问题。

bool isAllowZoom = false;

-(void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{
   if(isAllowZoom){
        NSString *javascript = @"var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=10.0, user-scalable=yes');document.getElementsByTagName('head')[0].appendChild(meta);";
       [webView evaluateJavaScript:javascript completionHandler:nil];
    }
    else
    {
        NSString *javascript = @"var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');document.getElementsByTagName('head')[0].appendChild(meta);";
        [webView evaluateJavaScript:javascript completionHandler:nil];
    }
}

谢谢,也许这会对您有所帮助。

答案 1 :(得分:0)

  

在Xcode 11,iOS 12、13上的Swift 4上更新了Sapana Ranipa答案

let isAllowZoom: Bool = false

  func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("didFinish navigation")
        self.activityIndicatorwbweb.stopAnimating()

        if(isAllowZoom){
          let javascript = "var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=10.0, user-scalable=yes');document.getElementsByTagName('head')[0].appendChild(meta);"
            webViewWB.evaluateJavaScript(javascript, completionHandler: nil)
        }
        else
        {

             let javascript = "var meta = document.createElement('meta');meta.setAttribute('name', 'viewport');meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');document.getElementsByTagName('head')[0].appendChild(meta);"
             webViewWB.evaluateJavaScript(javascript, completionHandler: nil)
        }

    }