美文网首页
iframe在ios宽度扩大解决方案

iframe在ios宽度扩大解决方案

作者: 皮蛋馅儿 | 来源:发表于2018-01-05 11:19 被阅读0次

样式

<style>
    #iframe {
        margin-top: 44px;
        width: 100%;
        height: 100%;
        display: block;
        vertical-align: bottom;
    }

    .scroll-wrapper {
        -webkit-overflow-scrolling: touch;
        overflow: auto;
        position: fixed;
        right: 0;
        left: 0;
        top: 0;
        bottom: 0;
        width: 100%;
        height: 100%;
    }
</style>

html

<div class="scroll-wrapper">
    <iframe frameborder="0" src="https://www.b.com/" id="iframe"
            scrolling="true" marginwidth="0" marginheight="0" align="center"></iframe>
</div>

非跨域

$("#iframe")[0].onload = function () {
    iosIframeWidthBug();
};
function iosIframeWidthBug() {
    if (!navigator.userAgent.match(/iPad|iPhone/i)) {
        return false;
   }
   var iframebody = document.getElementById('iframe').contentWindow.document.body;
   iframebody.style.width = document.body.clientWidth + 'px';
}

不跨域以上方法可以完美解决,但是在跨域的情况下,就会报:game:105 Uncaught DOMException: Blocked a frame with origin "http://xxx" from accessing a cross-origin frame.以下是跨域的解决方法:

跨域
a网站主页

<script>
    window.onload = function () {
        var clientWidth = document.body.clientWidth + 'px';
        window.frames[0].postMessage(clientWidth, 'https://www.b.com/');
    };
</script>

b网站子页

<script>
    window.addEventListener('message', function (e) {
        if (e.source != window.parent) return;
        var clientWidth = e.data;
        $('body').width(clientWidth);
        localStorage.setItem('clientWidth', clientWidth);
    }, false);

    var clientWidth = localStorage.getItem("clientWidth");
    if (clientWidth) {
        $('body').width(clientWidth);
    }
</script>

加我微信公众号【皮蛋馅儿】,一起学习哦~

相关文章

  • iframe在ios宽度扩大解决方案

    样式 html 非跨域 不跨域以上方法可以完美解决,但是在跨域的情况下,就会报:game:105 Uncaught...

  • iframe ios与安卓兼容问题

    ios iframe会放大为实际宽度bug

  • iframe,iOS下iframe页面内容宽度超出屏幕宽度

  • iframe高宽度根据内容自适应

    iframe根据内容的高度和宽度适应

  • iframe标签与a标签的使用

    iframe定义及用法(使用iframe页面会很卡不建议使用) iframe默认高度为50px,宽度为100px;...

  • javascript之Iframe高度自适应

    使用iframe除了通信以外最大的问题应该就是其高度和宽度的问题了,默认状态下,iframe的宽度为300px,高...

  • 前端预览PDF,Excel,Word,TXT文件

    前端可以使用iframe可以直接预览文件,以下是几种依靠iframe实现在线预览的解决方案。