小白实战大前端:移动端与前端的互通之路
上QQ阅读APP看书,第一时间看更新

2.1.3 HTML的跳转方法

HTML页面的跳转方法主要分两种:第一种叫作原页面跳转,另一种叫作新页面跳转。下面就来介绍一下这两种页面跳转的方法和区别。

原页面跳转其实就是通过更改当前浏览器地址栏中的URL地址来实现跳转,把当前页面定位到另一个站点或者页面。我们通常使用window.location对象实现,或者使用a标签进行跳转。下面我们分别看一下这两种方法的代码实现。

window.location对象的原页面跳转方法实现如代码清单2-2所示。

代码清单2-2 window.location原页面跳转

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <meta name="description" content="电商">
        <meta property="og:type" content="article">
        <meta property="og:title" content="我是标题">
        <meta property="og:url" content="https://www.xxxxx.com">
        <meta property="og:description" content="我是内容">
    </head>
    <body>
        我是商品页
    </body>
<script>
window.location.href = "http://www.baidu.com"
</script>
</html>

这段代码会在用户访问这个页面之后立刻跳转到百度首页,不需要其他操作。还有一种方法——使用a标签,如代码清单2-3所示。

代码清单2-3 a标签原页面跳转

<!doctype html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
        <meta name="description" content="电商">
        <meta property="og:type" content="article">
        <meta property="og:title" content="我是标题">
        <meta property="og:url" content="https://www.xxxxx.com">
        <meta property="og:description" content="我是内容">
    </head>
    <body>
    <a href="http://www.baidu.com">我要跳转百度</a>
    </body>
</html>

a标签方式与window.location最大的区别就是,window.location不需要用户做任何操作,但是a标签需要用户点击一下。当我们访问代码清单2-3所描述的页面时,会看到图2-1所展示的页面,点击“我要跳转百度”链接,就会看到图2-2所展示的界面。细心的人可以发现,在图2-2左上角处的浏览器的后退按钮是可操作的状态,即无论页面跳转方式是a标签方式还是window.location方式,跳转都可以后退。

图2-1 a标签跳转

图2-2 开发机的图标界面(PC开发机)

下面介绍前端页面的新页面跳转。新页面跳转与原页面跳转之间的差异在于,新页面跳转不能后退并且会产生一个新的页面,新的页面会跳转到目标地址。所以跳转新页面也可以称为打开新页面。在浏览器的window对象中有一个实现该功能的函数,它就是window.open()。让我们看一下代码实现,如代码清单2-4所示。

代码清单2-4 window.open实现

<!doctype html>
    <html>
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
            <meta name="description" content="电商">
            <meta property="og:type" content="article">
            <meta property="og:title" content="我是标题">
            <meta property="og:url" content="https://www.xxxxx.com">
            <meta property="og:description" content="我是内容">
        </head>
        <body>
            我是商品页
        </body>
    <script>
window.open(http://www.baidu.com)
    </script>
    </html>

当我们访问代码清单2-2实现的这个页面的时候,浏览器会打开一个新的浏览器页面,并且这个页面的URL地址会指向www.baidu.com

那么a标签的新页面跳转是如何实现的呢?具体如代码清单2-5所示,a的新页面跳转只需要加入一个target属性,并且把它的值设置为_blank,就可以达到跳转新页面的效果了。

代码清单2-5 a标签新页面跳转

<!doctype html>
    <html>
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
            <meta name="description" content="电商">
            <meta property="og:type" content="article">
            <meta property="og:title" content="我是标题">
            <meta property="og:url" content="https://www.xxxxx.com">
            <meta property="og:description" content="我是内容">
        </head>
        <body>
        <a href=http://www.baidu.com target=_blank>我要跳转百度</a>
        </body> 
    </html>