• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Vue 使用iframe引用html页面实现vue和html页面方法的调用操作

vue 搞代码 4年前 (2022-01-08) 38次浏览 已收录 0个评论

这篇文章主要介绍了Vue 本文来源gaodaimacom搞#^代%!码&网*使用iframe引用html页面实现vue和html页面方法的调用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

当我们需要在vue中使用其他模块或者其他地方的一些html页面功能时,我们可以使用iframe去引用html页面,实现他们的交互

首先我们可以再vue页面中使用标签引用html页面

  <div> </div>

其中src就是我们html的地址,我们可以在data中定义smgHtmlPath属性,在我们的created方法中初始化,为该属性赋予初始值

如果页面加载出来了,我们就可以开始vue页面和html页面的交互了

如果我们需要vue页面调用html页面方法,我们可以使用如下代码

 mounted() { this.iframeWin = this.$refs.iframeDom.contentWindow; },

首先在我们的mounted方法中得到iframe对象

在vue页面使用postMessage的API向html页面发送请求数据,因为我们的vue和html页面可能不在同一域名,所以会产生跨域的问题,这里我们使用的postMessage可以实现跨域,我这里在google和IE11测试都是可以跨域的

 loadSmgxmlModels(data) { this.iframeWin.postMessage(data,"*") }

这里的data就是我们要传递给html页面的数据

“*”,这里代表的是所有地址可以接收到,我们也可以指定地址,例如:www.baidu.com

在html页面的标签中编写监听方法,用来监听我们的请求,获取数据

 window.addEventListener('message', function(ev) { // 当我们是父子窗口进行消息传递时,可以使用此判断,只接受父窗口传递来的消息, if (ev.source !== window.parent) return; var data = ev.data; console.log("vue传递的数据为:"+data); //下面可以调用我们html页面js中的方法,使用传递的数据进行操作了 }, false);

这里我们监听的就是message,可以获取数据。

补充知识:Vue界面使用iframe嵌套html界面的传值问题

一.从父页面给子页面传值

可以通过url进行传值,若嵌入外网例如www.baidu.com,可以设置为

asd后面跟的值可以根据需要更改,不影响地址的访问

若为本地html文件,类似的可以写作

:src=”test.html#asd =1″

但是如何在子页面读取asd的值这个还没探究成功,稍后若寻找到合适的方法会再更新。这种方法比较适合比较简单的需求

二.父页面获取子页面的值

例如我们在子页面设置四个click事件,JS代码如下

 

那么在父页面我们可以在method中定义如下函数获取到n的值

 callchild(){ let obj1=window.frames["child"];//获得对应iframe的window对象 alert(obj1.n); },

将callchild函数由某个button触发,可以看到弹出窗口

以上就是Vue 使用iframe引用html页面实现vue和html页面方法的调用操作的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Vue 使用iframe引用html页面实现vue和html页面方法的调用操作

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址