编程技术记录

世界你好!

一般的同样的html代码,在UIWebView和WKWebView中显示效果是不一样的。例如

<!DOCTYPE html>
<html>
    <body>
        <span>test_input</span>
        <input id="test_input" type="text">
    </body>
</html>

显示效果:

可以看出两者有明显的区别。
那么如何适配呢?有两个方法(本质上是一个)。
1、如果是H5适配WKWebView的话,需要在H5添加如下代码

<meta name="viewport" content="width=device-width">

完整的html如下

<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="width=device-width">
    </head>
    <body>
        <span>test_input</span>
        <input id="test_input" type="text">
    </body>
</html>

2、如果是WKWebView适配H5的话,那么就需要替前端添加相同的H5代码,实现如下

 //js代码,在文档加载完毕后,添加head的子节点
 //节点内容为<meta name="viewport" content="width=device-width">
        let jScript = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);";
        let wkUScript = WKUserScript.init(source: jScript, injectionTime: WKUserScriptInjectionTime.atDocumentEnd, forMainFrameOnly: true);
        let wkUController = WKUserContentController.init();
        wkUController.addUserScript(wkUScript);

        let wkconfig = WKWebViewConfiguration.init();
        wkconfig.userContentController = wkUController;

        _webView = WKWebView.init(frame: CGRect.init(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height), configuration: wkconfig);
        self.view.addSubview(_webView);

        let htmlfile = Bundle.main.path(forResource: "test", ofType: ".html");
        let url = URL.init(fileURLWithPath: htmlfile!);
        let request = URLRequest.init(url: url);
        _webView.load(request);

参考 https://blog.csdn.net/GYMotgm/article/details/77944163

发表回复

© Beli. All Rights Reserved.