iframe去掉双滚动条

2 篇文章 0 订阅
1 篇文章 0 订阅

出现的问题:
页面一个滚动条,iframe引用的内容里有一个滚动条,非常难看。
在这里插入图片描述

去掉双滚动条
实现思想:

子页面(即被引用页面)通过postMessage把高度传给父页面(即引用页面,有iframe),父页面接收高度,重置本页面高度。

代码如下:

子页面:

<div ref="son1">
  <ul>
    <li>多写一点,增加高度</li><!-- 多写一点,增加高度 -->
  </ul>
</div>
mounted() {
  this.getHeight();
},
methods: {
  getHeight() {
    if (this.$refs.son1) {
      window.parent.postMessage(this.$refs.son1.offsetHeight + 35, "*");
      console.log("height:" + this.$refs.son1.offsetHeight);
    }
  },
},

要点:

  1. 页面给一个ref,目的:获得该部分高度;
  2. postMessage把高度传过去(注意postMessage的使用方法)

父页面:

<iframe src="http://localhost:8081/" frameborder="0" width="100%" :height="height"></iframe>
data() {
  return {
    height: "600",
  };
},
  mounted() {
    let _this = this;
    window.addEventListener("message", function (event) {
      var height = event.data;
      var h = Number(height);
      if (h) {
        _this.setHeight(height);
      }
    }, false);
  	// 也可以写成这样:
	// window.addEventListener("message", receiveMessage, false);
	// function receiveMessage(event) {
	//   console.log("event:" + event);
	//   var origin= event.origin;
	//   console.log(origin);
	// }
  },
  methods: {
    setHeight(height) {
      this.$set(this, "height", height);
    },
  },

要点:

  1. :height=“height” 用来接收高度;
  2. mounted里的message事件,用来接收子页面的高度,即event.data
  3. 高度有时是数值型,有时是对象,只有数值型可以用,所以需要做限制(为什么会有对象的格式,我也不知道);
  4. 重置高度$set

效果如下:只有页面上的一个滚动条
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值