前言

本文github地址可进行下载

需求:在vue中的超链接要在本页面展示,而浏览器的地址栏不会变化。这个前提我们今天主角就出来。

原理:就是在a标签的target属性指定到iframe的name的值。

一、iframe简介

iframe 元素会创建包含另外一个文档的内联框架(即行内框架)。W3C相关介绍

二、 vue-cli中用iframe

1. 使用vue脚手架生成一个带路由功能的项目。

2.在页面中引用iframe

首先,超链接的数据是通过接口返回的。刚开始返回按钮和iframe是不显示。只有点击a便签的时候在会在iframe显示网页内容

template中内容

回去
  • {{item.name}}

script中内容

export default {

name: 'hello',

data () {

return {

iframeState:false,

goBackState:false,

webAddress: [

{

name:'router',

link:'http://router.vuejs.org/'

},

{

name:'vuex',

link:'http://vuex.vuejs.org/'

},

{

name:'iframeAPI',

link:'https://msdn.microsoft.com/en-us/library/ms535258(v=vs.85).aspx'

}

]

}

},

mounted(){

const oIframe = document.getElementById('show-iframe');

const deviceWidth = document.documentElement.clientWidth;

const deviceHeight = document.documentElement.clientHeight;

oIframe.style.width = deviceWidth + 'px';

oIframe.style.height = deviceHeight + 'px';

},

methods:{

goBack(){

console.log('回到主页');

this.goBackState = false;

this.iframeState = false;

},

showIframe(){

console.log('显示iframe');

this.goBackState = true;

this.iframeState = true;

}

}

}

三、页面效果展示

**1. ** 页面展示包含超链接

8979c8dbf36d?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

**2. ** 在iframe中进行超链跳转

8979c8dbf36d?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

四、iframe问题总结

**1. **最近些项目遇到用iframe的地方,发现设置的固定高有时不能完全适应项目环境,不是高了就是不够高,在页面里看着很不爽。解决方案就是在钩子函数mounted中获取设备的宽和高并设置给iframe。

**2. **如果是初始没有a标签,那就需要事件委托来进行处理了。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐