使用 target="_blank"的时机

a标签有一个target属性用于控制当a标签被点击后的动作,”_blank”是target属性的擦后果常用值之一,它会使a标签被点击后打开一个新的窗口(如果用户有做设置的话,打开的可能是新标签页)。这样的设置在HTML中是错误的(也许这个属性只能用在XHTML中?),但是这个值可以达到人们要的效果,所以它仍然被使用。现在”_blank”在HTML5中式完全有效的,但我们要探讨一下什么时候才应该使用它。

糟糕的理由之一:你习惯使用”_blank”

不管人们是怎么想的,浏览器的默认行为应该是在当前页面打开链接(就像a标签中有target="_self"的属性设置一样 ),所以target="_blank"是在对这一默认行为做改变。或许你的习惯是点击任何链接都会打开一个新的窗口或者标签页,但很可能大部分人更习惯于使用浏览器的默认行为,这样当其他用户在浏览你所写的页面的时候他们会觉得很不舒服。

如果你所做的产品目标用户只是你,那当然随你高兴。但一旦其他人会使用你的站点,那还是使用默认行为吧。用户可以使用键盘元件[e.g. Ctrl]+点击目标链接的方式打开一个窗口/新标签页。这样对用户来说点击链接显示网页的方式既可以是当前页面打开也可以是打开新窗口的,这对于你而言也是一样的。而且这样一来,你也不用把链接的行为加诸到每个用户上。

当一定要使用target="_blank"的时候再去使用它。

糟糕的理由之二:用户,请一直浏览我的页面吧

其他的站点都太普通了,只有我们的站点如此特别。我们的站点是多么的重要,用户绝对不应该离开它。

糟糕的理由之三:“内部”链接和“外部”链接表现应该不同

“内部”链接(链接到自己的站点)使用的浏览器默认行为,但是“外部”链接(链接到其他站点)将会在新窗口/新标签页中打开。这一点和上文所说的另外两点是有关联的,也许这一行为更加糟糕。你明知道正常的链接样式会有更好的体验,但这么做了意味这用户会在点击链接时离开你的站点,所以你宁可放弃更好的体验也想留住用户。

我曾听很多人说过“内外部”链接样式不统一是“传统”,但我不认为这是件好事。

糟糕的理由之四:链接指向是一份PDF文件

除了PDF文件外还有很多其他类型的非Web资源都因为文件类型的原因而作为新窗口/新标签页打开,它们和普通的网页没有区别,为什么要被“区别对待”呢?假如你希望让用户不在浏览器中打开文件而是直接下载的话,可以使用download属性。

糟糕的理由之五:我的客户希望这样

我感受到了“客户怎么说就怎么做,不需要为此与客户起冲突”的意思了。但其实这个问题大可不必变成一个冲突。如果他们连这一点都不信任你,那么你的客户要信任你些什么呢?换做我的话会这么和客户说的:

按照常理打开一个链接的样式应该是遵照浏览器的默认行为。如果我们想要改变这一行为的话一定有我们的原因,但对于大部分链接依然遵循这一默认行为。我们不希望将我们的习惯强加到用户身上,也不想在这么小的问题上对用户造成一些潜在的影响。我们希望我们的用户能对我们的产品感到满意。
希望你冷静耐心的劝说能让你的客户对你满意。

糟糕的理由之六:在一个无限下拉的页面上应用

无限下拉是一个很耍人的玩意儿。从它可以不中断地传递信息的角度来说,无限下拉是个很好的用户体验点。但是一旦无限下拉没有被合理使用了,它就会成为一个诟病。退回到一个无限下拉页面的时候,用户看到的应该是上一次它们离开这个页面的地方,而不是又从页面顶部开始。要如何保证这样的效果就是你的工作了。假如你用打开新窗口/新标签页的方式来逃避这个问题,那你的工作能力也是得不到提升的。

适合使用的场景之一:由用户激活的媒体播放

音乐,视频,广播…都算是用户激活的媒体。

在用户播放这些媒体的时候,对网页做一些操作可能会使媒体停止播放。这时,可以在新窗口/新标签页中打开网页,可以询问用户是否要离开当前页面。在这种情况下使用打开新窗口/新标签页是正确的做法,这是为了用户能够停留在他们当前的网页位置上。关于媒体播放的问题,我们曾经也有讨论过,如果多媒体是正在播放的,那么对链接就要做特殊的处理。如果多媒体并不是正在播放的,那么链接就还是按照浏览器默认的样式。

虽然我是这么认为的,但其实你的YouTube上切换视频[2]的时候它也不会做任何提示的(比如误点到另一个视频后,当你使用后退回到上一个视频时,没有出现类似于“这个视频你已经看过了”的提示)。

适合使用的场景之二:当用户在当前页面做一些可能会丢失的操作时

如果一个用户正在记录些什么或者调整安排些什么,点击链接使当前页面的内容丢失了,用户会非常的闹心–刚刚做的全白搞了?即使事实上用户的记录并不会丢失(你会做保存的操作),将用户的心情置于那样一个恐惧的状态也是不应该的。

就拿用户们常常用来写程序的CodePen来举例好了:

打开新窗口/新标签页的链接的样式是’learn more’这样的样式。

有正常链接样式的链接使用的就是浏览器默认行为,但是CodePen会查看用户是否保存了当前代码,如果用户没有保存的话会做出提醒。

假如你的浏览器崩溃了或者直接打开了别的站点,CodePen也会将编辑器的状态保存在本地储存中,以便用户不会丢失他们的代码。

再举个栗子,当用户在处理订单的时候,你自然不希望他们离开你的网站。像类似于“配送信息”这样的链接用户应该是可以在依然能继续处理订单的前提下打开的。

“阅读一篇文章”这样的链接在这里就没什么好讨论的。从大部分情况来看,用户能毫不费力地点击后退回到上一个页面(大部分浏览器还能回到你离开那个页面时的位置),所以用户也不会在这里流失掉,而且许多浏览者只是走马观花罢了。

适合使用的场景之三:技术问题

在有些情况下,如果不使用target="_blank"浏览器的行为就会变得非常奇怪的时候,那只能使用它了。比如在使用Outlook Kangaroo 2009企业版的时候如果不加上target='_blank'的话,链接会在侧栏上被打开。这样的情况下就不得不使用target="_blank"了。

扩展阅读

如果你还想知道更多,可以访问下面的链接:

你也可以添加下面的代码,让用户自行选择:

<form>标签也可以加上target=”_blank”,但是我觉得这种用法就更少见了。不过这篇文章中对target=”_blank”的讨论对form一样适用。

如果一个视频你正看到一半,但不小心点到了别的视频又马上点击后退,刚刚正在看的视频又要从头播放了。所以如果从一个视频到另一个视频的播放中间能有一些过渡就好了,或者在一个视频的时间轴上加一个箭头告诉用户他已经看到这个位置了也挺好的。

收藏 2 评论

关于作者:kmokidd

简介还没来得及写 :) 个人主页 · 我的文章 · 14

相关文章

可能感兴趣的话题



直接登录
最新评论
  • 砖家   2014/09/03

    1、仁者见仁,智者见智
    2、文章写得有些怪,比如
    --------------
    糟糕的理由之二:用户,请一直浏览我的页面吧

    其他的站点都太普通了,只有我们的站点如此特别。我们的站点是多么的重要,用户绝对不应该离开它。
    --------------
    就这么一段,到底想表达什么,是用呢,还是不用呢,连自己都表达不好,怎么让人信服。

    • uip   2014/09/07

      同意,文章写的古怪,太多主观性的观点,却没有给出令人信服的理由

跳到底部
返回顶部