如何优雅地打开一个新页面

542 阅读2分钟

方式一:使用Html中标签来定义页面的元信息

<!-- 5秒钟后跳转到指定页面 -->
<meta http-equiv="refresh" content="5;url=http://www.baidu.com"/>

方式二:使用Javascript

利用window.location对象的href属性、assign()方法或replace()方法来实现。

1、跳到b页面

window.location.href='b.html'

2、返回上一个页面

window.history.back(-1)

3、跳转到b页面(只适用于ie)

window.navigate('b.html')

4、跳转到b页面

self.location.href='b.html'

从字面上就可以理解到 window 指的是当前窗口 而 self 指的是自己 在HTML 中 由于页面可以镶嵌页面 所以这2个就有了区别。比如说 我有个页面A.HTML 里面嵌套了一个B.HTML 在A中使用 window.location 跳转,就把整个页面跳转了。而在 A中镶嵌B页面的位置使用了self跳转 就只是把B界面跳转,A页面其他地方没有变化。

5、在顶层页面打开b页面

top.location.href='b.html'

如果一个页面嵌套了多个html,那么top.location.href的作用是在最外层页面打开b页面

6、在本页面重新打开一个新页面

window.open()
a href属性

在本页面重新打开一个新页面。所以左侧菜单会随之改变。

7、在本页面改变路由指向

this.$router.push()

只是改变了页面主题区域的路由指向,所以左侧菜单不改变。也就是说新路由的菜单和现在路由的菜单不是同一个的情况下,会导致当前页面和其所属的菜单不统一。

关于方法6、7的区别,在这里举一个例子:

比如页面A隶属于菜单menuA,页面B隶属于菜单menuB,需求是从页面A跳转到页面B。

采用方法6、7,结果是从页面A跳转到页面B,成功跳转,但是菜单仍然在菜单A,也就是说菜单A仍然处于选中状态,给人的错觉是现在仍在菜单A。

而采用方法8,结果同样是从页面A成功跳转到页面B,但是菜单也同步跳转到菜单B,也就是说菜单B处于选中状态。

所以具体采用哪种方法,根据实际需求决定。