在vue中嵌入外部网站的实现

利用iframe

top:导航栏的height

left:左侧菜单栏的width

src:右侧页面要嵌入的外部网站

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<template>
 <div>
  <iframe src="https://www.iconfont.cn/" id="mobsf" scrolling="no" frameborder="0" style="position:absolute;top:64px;left: 240px;right:0px;bottom:100px;"></iframe>
 </div>
</template> 
  
<script>
 export default {
  data () {
   return {
   }
  },
  mounted(){
   /**
   * iframe-宽高自适应显示 
   */
   function changeMobsfIframe(){
    const mobsf = document.getElementById('mobsf');
    const deviceWidth = document.body.clientWidth;
    const deviceHeight = document.body.clientHeight;
    mobsf.style.width = (Number(deviceWidth)-240) + 'px'; //数字是页面布局宽度差值
    mobsf.style.height = (Number(deviceHeight)-64) + 'px'; //数字是页面布局高度差
   }
 
   changeMobsfIframe()
 
   window.onresize = function(){
    changeMobsfIframe()
   }
  }
 }
</script>


补充知识:导航钩子有哪几种,如何将数据传入下一个点击的路由页面

1.全局导航守卫

1
2
3
4
5
6
7
8
//前置钩子
router.beforeEach((to,from,next)=>{
 //do something
})
//后置钩子(没有next参数)
router.afterEach((to, from)=>{
 // do something
})
2.路由独享守卫

1
2
3
4
5
6
7
8
9
10
11
const router = new VueRouter({
 routes: [
 {
  path: '/file',
  component: File,
  beforeEnter: (to, from, next)=>{
  //do something
  } 
 }
 ]
})
3.组件内的导航钩子

组件内的导航钩子主要有三种,beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave。它们是直接在路由组件内部直接进行定义的

1
2
3
4
5
6
7
8
9
10
11
data(){
 return{
 pro:'产品'
 }
},
beforeRouteEnter:(to,from,next)=>{
 console.log(to)
 next(vm => {
 console.log(vm.pro)
 })
}
注意:beforeRouteEnter不能获取组件实例this,因为当守卫执行前,组件实例还没被创建出来,我们可以通过给next传入一个回调来访问组件实例,在导航被确认时,会执行这个回调,这时就可以访问组件实例了。

仅仅是beforeRouterEnter支持给next传递回调,其他两个并不支持,因为剩下两个钩子可以正常获取组件实例this。

4.params和query

params传参

1
2
3
4
5
6
7
8
this.$router.push({
 name: 'detail',
 params: {
 name: 'xiaoming'
 } 
});
//接收
this.$route.params.name
query

1
2
3
4
5
6
7
8
this.$router.push({
 path: '/detail',
 query:{
 name: 'xiaoming'
 }
});
//接收
this.$route.query.id
query和params的区别

params只能用name来引入路由,query既可以用name又可以用path(通常是path)

params类似于post方法,参数不会在地址栏中显示

query类似于get,页面跳转的时候,可以在地址栏看到参数

补充:

router为VueRouter实例,想要导航到不同url,则使用router.push方法

$route为当前router跳转对象,在里边获取name,path,query,params等数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值