WKWebView与JS交互

字数 263阅读 265
  • 开发工具:Xcode9 语言:Swift4 系统环境:ipad ios10+

1.修改背景色

webView.evaluateJavaScript("document.getElementsByTagName('body')[0].style.background = '#B0C4DE'", completionHandler: nil)

2.图片放大

  • 遍历所有图片,width是按照当前webView的宽度比例,height = 'auto'按照width自适应
webView.evaluateJavaScript(
            """
            for (var j=0;j<document.images.length;j++) {
                document.images[j].style.width = '50%';
                document.images[j].style.height = 'auto';
            }
            """
            , completionHandler: nil)

3.字体放大

  • iphone通常字体放大使用webkitTextSizeAdjust整体放大,但是此方法在iPad上不能使用。
3.1 iPhone字体放大
webView.evaluateJavaScript("document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '200%'", completionHandler: nil)
3.2 iPad字体放大
webView.evaluateJavaScript("document.getElementsByTagName('body')[0].style.fontSize = '200%'", completionHandler: nil)
  • 特殊情况,当<span style=\"font-size: 18px;\">设置了字体大小document.getElementsByTagName('body')[0].style.fontSize并不能去改变其字体大小.如要重新设置
// 所有span标签字体放大
webView.evaluateJavaScript(
        """
        for (var j=0;j<document.getElementsByTagName('span').length;j++) {
            document.getElementsByTagName('span')[j].style.fontSize = '100%';
        }
        """
            , completionHandler: nil)

4. 禁止缩放

  • 禁止WKWebView手势缩放
webView.evaluateJavaScript(
            """
            var script = document.createElement('meta');
            script.name = 'viewport';script.content=\"user-scalable=no\";
            document.getElementsByTagName('head')[0].appendChild(script);
            """
            , completionHandler: nil)

5. 初始化页面大小

 webView.evaluateJavaScript(
    """
    var script = document.createElement('meta');
    script.name = 'viewport';
    script.content=\"width=device-width, initial-scale=1.0,maximum-scale=1.0, minimum-scale=1.0, user-scalable=no\";
    document.getElementsByTagName('head')[0].appendChild(script);
    """
 , completionHandler: nil)
  • 标签里的scale值就是页面的初始化页面大小,< initial-scale >和可伸缩放大最大< maximum-scale >和最小< minimum-scale >的的倍数,<user-scalable>是否支持缩放,如果还有别的需求可自行设置,如果都为1表示初始化的时候显示为原来大小,可缩放的大小都为原来的大小<即不可缩放>。

推荐阅读更多精彩内容