美文网首页
iOS设备下iframe宽度和高度无法自适应的问题

iOS设备下iframe宽度和高度无法自适应的问题

作者: 十年一品温如言1008 | 来源:发表于2019-01-14 17:10 被阅读0次

这个问题困扰了我几个星期,网上百度了各种方法,终于是解决了。

我是先判断了是iOS设备还是安卓设备

var click = device.mobile() ?'touchstart' :'click';

var u = navigator.userAgent;

var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端用的这个方法,然后在iOS下

iframe +='*width: 100%;width: 1px; min-width: 100%;" scrolling="no" ';这句话控制了自适应宽度,其实我也不明白为什么width前面要加*,为什么要有个1PX。但是有了这个,确实能生效。

也可以这么写:

<div style="overflow:auto;-webkit-overflow-scrolling:touch;width:100%;height:100%;">

<iframe src="w1.1.html" frameborder="0" height="100%" scrolling='no' style="width:1px; min-width:100%; *width:100%;">

</div>

这个是我试了很多方法中,唯一iOS设备中能用不出错的,然后这样了以后,iOS的高度无法自适应,只能百分之百显示,不能拉到底,安卓的可以,所以我在判断里面,单独给iOS设备写了个自适应高度。代码如下:

// iframe高度自适应

function changeFrameHeight(ifm) {

if (isIOS) {

var cacheHeight =0;

        function run() {

var mf = $("#mainFrame")[0];

            // when the main frame has already been loaded, the check its height

            if (mf && mf.contentDocument && mf.contentDocument.body) {

var iframeHeight = $("#mainFrame")[0].contentDocument.body.clientHeight;

                if (iframeHeight && iframeHeight != cacheHeight) {

// cache the main frame height

                    cacheHeight = iframeHeight;

                    $("#mainFrame").height(iframeHeight);

                }

}

setTimeout(run, 200);

        }

run();

    }else {

ifm.height = document.documentElement.clientHeight -118;

    }

}

,然后安卓和苹果的都能用了,改好之后还有点不敢相信,但是确实解决了在iframe下兼容iOS和安卓的问题。有看到的亲,改不好的话可以留言问我哈。

相关文章

网友评论

      本文标题:iOS设备下iframe宽度和高度无法自适应的问题

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