vue项目中,iframe的src动态赋值

html代码

clipboard.png

js代码

clipboard.png

输出是http://localhost:8080/

直接靠双向绑定src1也赋值不了

应该怎么改才可以让src动态赋值呢?

阅读 24.3k
5 个回答

在iframe上加个v-if,利用一个状态来控制iframe的渲染

在created的生命周期里赋值,beforeCreat生命周期里data还没初始化

clipboard.png

可以类似这样:

   /**
     * 动态创建iframe
     * @param dom 创建iframe的容器,即在dom中创建iframe。dom能够是div、span或者其它标签。
     * @param src iframe中打开的网页路径
     * @param onload iframe载入完后触发该事件。能够为空
     * @return 返回创建的iframe对象
     */
    createIframe(dom, src, onload) {
      //在document中创建iframe
      var iframe = document.createElement("iframe");

      //设置iframe的样式
      iframe.style.width = "100%";
      iframe.style.height = "100%";
      iframe.style.margin = "0";
      iframe.style.padding = "0";
      iframe.style.overflow = "hidden";
      iframe.style.border = "none";

      //绑定iframe的onload事件,处理事件的兼容问题
      if (
        onload &&
        Object.prototype.toString.call(onload) === "[object Function]"
      ) {
        if (iframe.attachEvent) {
          iframe.attachEvent("onload", onload);
        } else if (iframe.addEventListener) {
          iframe.addEventListener("load", onload);
        } else {
          iframe.onload = onload;
        }
      }

      iframe.src = src;
      //把iframe载入到dom以下
      dom.appendChild(iframe);
      return iframe;
    },

需要动态引入改为

self.src1 = require('http://..........');

双向绑定需要data里面声明

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">

    <iframe :src='src1' width="100%" height="300"></iframe>
</div>
<script>
new Vue({
      el: '#app',
      data: {
          src1:'https://www.baidu.com'
      },
    mounted(){
        this.src1='https://segmentfault.com';
    }
})
</script>
</body>
</html>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题