页面跳转的逻辑

某个行为背后的逻辑可能更让我感兴趣



首先从用户预期上来说,页面的跳转有预期内的跳转和预期外的跳转之分,而从方式上来说有页内跳转和新页打开两种。超链接实际上是信息页面的「传送门」,你点击是为了直达信息盒子,拿到你想要的东西,那么在这个过程中

  • 如果你点击后所呈现的并非你想要看到的页面时,即为「预期外的跳转」
  • 若正是你所想看到的页面,则为「预期内的跳转」

其次从呈现方式上又大致可以分为两种跳转方式:

  • 页内跳转(InTab)(页内跳转只能是一种应用内的跳转)
  • 新页打开(New Tab)
    • 应用内
    • 跨应用

而呈现方式上的两种跳转又会同时出现在上面所提到的两种预期跳转行为中,因此下面我将逐类分析。

预期外的跳转会有两种结果,一种是所呈现的界面为最终的非预期页面,这里面可以是广告、与预期信息相类似的页面、404页面等等,另一种则是去往预期页面的中间页,这里面大多是广告,有的可以直接点击关闭,有的则需停留特定时间后才可关闭。OK,下面我们将呈现方式加入进来,举个例子,某视频网站中点击一个作品,有时会先出现一个广告页,没有规定多长时间后关闭,底部有一个继续观看,点击后即可正常观看。这很明显是一个非预期的跳转,但是因为这个广告页是在当前页面,并未自动打开新的页面,因此这是一个预期外的页内跳转。另外以 Google 搜索为例,默认为页内跳转[1],除非在超链接上右键选择新标签页打开。这不禁让我思考这样做的目的是什么?这两种跳转方式各自的取舍是什么?

很明显的,页内跳转是「线」的逻辑,你可以想象一下,第一次打开的页面是这条 Thread 上的第一个项目,接着你点开了这个页面上的一个链接,随之跳转到了另一个页面,你所看到的这个页面就是「当前页」,不知道你发现没有,你只可以“同时”浏览这一个「当前页」,而无法真正地「同时浏览」,当你不断地进行下去,浏览器左上角的⬅️➡️便成为了你在这条线上选择「当前页」的指令按钮。这样做有什么好处呢?首先是页面的数量,这实际上表示的是美观性和资源占用,其次是操作的顺序被记忆下来了,这也是一种逻辑,简单的层级逻辑。

与之相对的新标签页跳转在我谈到的的这几个方面是有所区别的,它更像是「面」的逻辑,比如说它实现了真正的「同时浏览」,它的「当前页」可以是多个,相应的资源占用就会比较高,层级逻辑容易混乱,当你把不断新打开的跳转页交叉排布在浏览器顶端时,当你在处理不同类别的项目时,很明显非常混乱,因此也催生出了很多做标签页管理的扩展程序。

还有一种跳转就是我上面分类项中的子分类——跨应用的跳转,这实际上是新页打开的一种特殊情况,比如说在移动设备中,你在 Twitter 中点开一个 Instagram 链接,那么设备会先询问你是用 Instagram App[2] 还是用 Browser,而这个询问的底部弹窗就可算作为一个中间页,但是当你将选择固定[3]后,之后便不会出现,中间页也就消失了。

按照我的分类可以组合成的跳转方式:

  • 应用内(通常是浏览器)
    • 预期内
      • 页内跳转
        • 有中间页
        • 无中间页
      • 新标签页跳转
        • 有中间页
        • 无中间页
    • 预期外
      • 页内跳转
        • 有中间页
        • 无中间页
      • 新标签页跳转
        • 有中间页
        • 无中间页
  • 跨应用
    • 预期内的新标签页跳转[4]
    • 预期外的新标签页跳转(比如说你复制了一个下载链接,到浏览器后才发现是一个宣传页,而并非开始下载)

如果是个人网站,如何选择页内跳转和新标签页跳转呢?这当然要视内容而定,你要打开的新页面是否还跟当前页面有继续工作需要方面的联系呢?如果没有,就可以是新标签页跳转,如果有,需要进行再判断,你要打开的页面是否需要参考当前页、是否还需要当前页的其他信息呢?如果需要,还应该选择新标签页打开,如果不需要,页内跳转即可。

还有一种选择倾向是你准备打开的页面的层级是多少,比如你只想看个维基词条,那么页内跳转就行了,倘若你要找到某个页面的某个角落的次级页面的某个条目,可以依自己判断综合使用两种跳转方式,在合适的地方采用合适的跳转方式。


本文纯粹为个人观点且有诸多不完善的地方,有任何看法和意见请友好交流。


  1. 有的网站为自主控制 

  2. 如果有安装的话 

  3. 通常是 Always or Just Once 

  4. 这里新标签页的“页”为另一个应用的“页面”