美文网首页
WKWebView与JS交互

WKWebView与JS交互

作者: Devin_ | 来源:发表于2017-10-24 19:20 被阅读188次
    • 开发工具: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表示初始化的时候显示为原来大小,可缩放的大小都为原来的大小<即不可缩放>。

    相关文章

      网友评论

          本文标题:WKWebView与JS交互

          本文链接:https://www.haomeiwen.com/subject/uzasextx.html