0

我正在使用在页面上呈现全屏元素(100% 宽度和高度)的 SDK。我想限制这一点。我在这个项目中使用 Vue.js。

在这个演示之后,我尝试在 iframe 中渲染:

Vue.component('i-frame', {

  render(h) {
    return h('iframe', {
      on: { load: this.renderChildren }
    })
  },
  beforeUpdate() {
    //freezing to prevent unnessessary Reactifiation of vNodes
    this.iApp.children = Object.freeze(this.$slots.default)
  },
  methods: {
    renderChildren() {
      const children = this.$slots.default
      const body = this.$el.contentDocument.body
      const el = document.createElement('DIV') // we will mount or nested app to this element
      body.appendChild(el)

      const iApp = new Vue({
        name: 'iApp',
        //freezing to prevent unnessessary Reactifiation of vNodes
        data: { children: Object.freeze(children) },
        render(h) {
          return h('div', this.children)
        },
      })

      iApp.$mount(el) // mount into iframe

      this.iApp = iApp // cache instance for later updates


    }
  }
})

Vue.component('test-child', {
  template: `<div>
    <h3>{{ title }}</h3>
    <p>
      <slot/>
    </p>
  </div>`,
  props: ['title'],
  methods: {
    log: _.debounce(function () {
      console.log('resize!')
    }, 200)
  },
  mounted() {
    this.$nextTick(() => {
      const doc = this.$el.ownerDocument
      const win = doc.defaultView
      win.addEventListener('resize', this.log)
    })
  },
  beforeDestroy() {
    const doc = this.$el.ownerDocument
    const win = doc.defaultView
    win.removeEventListener('resize', this.log)
  }
})

new Vue({
  el: '#app',
  data: {
    dynamicPart: 'InputContent',
    show: false,
  }
})

https://jsfiddle.net/Linusborg/ohznser9/

并阅读这个问题: Render Component in iframe using vuejs without src attribute

但没有什么能限制这种行为。有问题的 SDK 是Zoom Web SDK

4

1 回答 1

0

我认为您应该尝试使用 A Modal 来控制视图和显示的内容。我将它用于当前项目以显示不同的视图我可以完全控制它应该占用多少屏幕试试这个插件Vue-js-modal。它非常好并且有据可查

于 2019-05-29T12:34:31.850 回答