如何解决 iframe 在浏览器 125%、150% 下分辨率的适配问题

有些业务场景(比如单点登录)下,我们依然会用到 iframe 这种嵌套页面的方式。但因为会涉及跨域、跨页面的问题,导致浏览器的适配就变成了一个问题,以下纪录了这种问题的解决方案,供大家参考。

 <iframe
   :src="iframeUrl"
   id="myframe"
   frameborder="0"
   @load="loaded"
   width="100%"
   height="100%"
 ></iframe>

我们可以通过设置 load 事件确保加载完成之后再执行适配方案。

loaded(type) {
      let scale = 1;
      let iframeWin = document.getElementById("myframe");
      let width = window.screen.width;
      if (
        (width == 1536 && window.devicePixelRatio == 1.25) ||
        (width == 1280 && window.devicePixelRatio == 1.5)
      ) {
        scale = 1 / window.devicePixelRatio;
      } else if (window.devicePixelRatio > 1.5) {
        scale = window.devicePixelRatio / 2.6;
      }
      iframeWin.contentWindow.postMessage(
        {
          title: "XX",
          zoom: scale,
        },
        "*"
      );
    },

需要注意的是,这里我们使用了 contentWindow.postMessage 来传递数据,如果不涉及跨域问题的话,可以直接更改样式或者在 css 中修改。

iframeWin.style.transfrom = `scale(${scale})`;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码搬运媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值