我明白楼主的意思。
我先说一下我的需求,然后再说一下我的实现。
需求:我们公司需要做一个在线office编辑的组件。控件同vue结合的时候,始终不能正确加载,没有办法了,只能使用iframe来做。但是使用iframe来做就遇到问题了,vue组件和iframe怎么通信。因为我只想iframe负责控件显示,不然iframe中的html引入axios还要引入我的ui库,因为我希望loading状态这些保持一致,以及一些全局提示。
解决方案:
核心原理共享vm对象和iframe的window对象this.$el.getElementsByTagName('iframe')[0].contentWindow
那我怎么注入我的vm对象呢,this.$el.getElementsByTagName('iframe')[0].contentWindow.vmObj
然后再iframe用window.vmObj就可以正常调用了。
当然我文笔较乱,因为我没有整理,而且这个还是刚试出来的,我们的控件远比想象中的复杂。
1、我们是在vue template中直接写的iframe标签,刷新页面时iframe onload事件会调用2次。
最后用动态脚本创建的iframe。
2、我们需要监控iframe的onload事件
3、我们组件希望可重用,也就是说寻找iframe父级元素(el)时比较困难。
10 回答11.6k 阅读
2 回答3.1k 阅读✓ 已解决
5 回答2.2k 阅读
3 回答2.7k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
5 回答734 阅读
4 回答2.2k 阅读✓ 已解决
获取iframe内容和vue无关,至于iframe怎么调用vue组件方法,这句话就更难理解了。
如果你想获取iframe内容: