新开窗口应该浏览器控制
星期四 04.16.2009 - Posted in 工作分享, - 4,448 views是否打开新窗口是个古老话题,并且多开窗口的问题基本已有了原则上的定论。
- 后退、前进按钮不可用;
- 用户无法控制链接在本页还是新窗口打开;
- 增加任务栏负担;
- 不便手动全部关闭。
从操作角度考虑,其实用鼠标右键菜单可以新开标签页,中键点击链接可以新开标签页,按住链接拖拽到页签也可以在本窗口打开,都能避免定义target=_blank链接的新开窗口问题。但毕竟不顺手,而且不是通用方案,但是我更有理由相信target=_blank不是绝对错误。
首先,完全依靠w3c标准来定论绝对不能使用target=_blank有欠说服力,我比较赞同按需打开新窗口的结论,同时也百思不得其解为什么Strict DTD抛弃target标签,因为需求很典型。
其次,对中国网民,或全世界发展中国家网民来说,能灵活使用shift键的基本都是中高级用户,排除少数也知道按住shift再点击链接的其他用户,这个用户群的量级也太小。
第三,在浏览器完全页签化、独立页签进程的趋势下,target=_blank是打开新窗口还是新标签页对用户更友好,是否应该浏览器来改进?比如Chrome和FF中点击target=_blank默认是打开新标签页,而不是新窗口。(IE, Safari都是打开新窗口)
并且针对Chrome和FF中如果按住shift点击链接打开新窗口的情况,我推断它们还是比较容忍target,并且最大程度从良了这个属性。尤其Chrome还支持tab拖出和重组,让是否新窗口的问题得到了弱化,操作流畅感全面超越其他浏览器。点击“确实应该新开窗口”链接的target=_blank似乎也不是那么讨厌,并且可以方便用户不再思考、动手按住shift。
因为中国特色网站的呈现、渲染效率普遍很低,里边无数个脚本调用,还有外链广告。我习惯是一个窗口一个网站,比如网易新闻首页到内容页的链接,淘宝搜索结果到商品页的链接,都是强制target=_blank。用IE和Safari浏览的体验很差,但Chrome和FF不仅没问题而且还很顺手。
试想,如果所有浏览器处理target=_blank都是新标签页而不是新窗口,点击后既不会增加任务栏负担,也不会造成全部手动关闭麻烦。世界会不会清净很多?web设计师也不再那么痛苦?或者说target=_blank本身确实不合理,应该拆为target=_window和target=_tab两个定义。意外的是,在网上查到哈斯日志、MozTW都已在05年有类似想法提出,我假设应该如此:
- 链接默认在本窗口打开;
- 链接定义target=_window新开窗口;
- 链接定义target=_tab新开标签页;
- 链接只要按住ctrl键统一新开窗口;
- 链接只要按住shift键统一新开标签页。
另外关于新标签页(new tab)中文说法,Chrome和FF翻译是“新标签页”,IE是“新选项卡”,Safari是“以标签方式打开”。个人认为既不是“标签”也不是“卡”,叫做“新页签”最合适,起码应该呼吁所有浏览器统一说法,太不象话了。
事实同样证明,好方案应该从根源上解决问题,退一步海阔天空。如果仅停留在页面上纠缠target=_blank的对错,似乎永远也无解,希望我的判断没错。
注意:文中提到的各浏览器版本特指IE7, FF3, Chrome1, Safari4。
© 一叶千鸟(转载请留原文链接,更新于2009年05月16日1点)
其实这个要看目标用户的大多数习惯和具体的应用,一般我认为对内容性比较强的譬如博客文章,帖子,新闻一类的就用_blank比较好,而交互性比较强譬如站内消息,一类的操作就本页打开比较好。至于w3c的Strict DTD,我想可能是因为一般情况下如果页面是本窗口打开,可以用shift打开新窗口,但是反向就不能。就是说一个新窗口打开的没有操作本窗口吧,而且也很难确定哪个是链接是新窗口。
04.16.2009 5:30 下午 - 1楼不过说道一点就是我现在习惯用ctrl打开tab的方式打开新窗口,无论是新窗口还是本页。
另外除了功能性以外,还可以结合上下文来确定链接是否是新窗口打开。
你太把自己当”鸟”了,我想标准还轮不到你来指手画脚吧!你说对吗?
04.16.2009 6:42 下午 - 2楼IE7 可以设置 target=_blank 或 window.open 的页面的打开方式,可以选择:新窗打开、新标签打开、浏览器自已决定(决定标准就是指定窗口大小的 window.open 开新窗,其余新标签)。几乎所有的标签式浏览器都有类似的选项。所以 W3C 不可能为链接单独设立一个新标签打开的属性。
这个问题讨论太多遍了,呵呵。产品设计师根据需要来决定某个链接是否加 target=_blank 就好了,即使在 Strict DTD 下,同样可以用 JS 来实现新窗/新标签打开。新开个窗口也没什么大不了的,有经验的网友会让它在新标签打开;至于新手,就更需产品设计师帮他决定是否开新窗了。
没必要急着用 Strict DTD,现在前端还普遍达不到那要求。
04.16.2009 9:25 下午 - 3楼补充一点,IE7 默认开新窗应该是出于 IE6 用户的平滑过渡的考虑。
04.16.2009 9:29 下午 - 4楼@花火
你都能对我指手画脚,凭什么我不能对“标准”指手画脚?
@Birdstudio
04.16.2009 10:01 下午 - 5楼Chrome我找过没发现,换句话说,Chrome的处理是强制。关心Strict DTD不一定马上用,每次都等到用才去关心的学习态度是不对的。如何更好应用target=_blank不是本文重点。
不错,是按需打开新窗口,不过这个“需”是用户的需,不是开发者定义的需。
04.16.2009 11:40 下午 - 6楼我比较赞同不用target,
引用:【闲耘 says:】
不错,是按需打开新窗口,不过这个“需”是用户的需,不是开发者定义的需。
04.17.2009 9:18 上午 - 8楼我比较赞同不用target,
04.16.2009 11:40 下午 – 6楼
我习惯于一个思路一个窗口
比如看了新闻,新闻扩展开的页面,不管是否一个域名,一个站点,我都会ctrl点击
看的过程中萌发了新的念头,就会shift点击打开新窗口。呵呵
新窗口的确应该交给浏览器控制,也就是交给用户控制。
几分钟内可以编辑评论的功能真好。
04.17.2009 10:16 上午 - 9楼快捷键反了吧,ctrl-》tab
04.21.2009 10:03 上午 - 10楼我觉得从网站特性出发把。我对于现在某些SNS网站经常新开窗口深恶痛绝,比如校内和百度空间(算一个SNS吧)。对于SNS这类网站用户粘性较高或者说用户会跳转很多页面的网站一定要对新开窗口做出控制,这点开心网和5G做的不错。校内网我经常浏览10分钟上面就一大堆窗口。
04.21.2009 3:13 下午 - 11楼所有浏览器都玩标签的话,这个问题就不是那么大了。
04.23.2010 7:22 下午 - 13楼@花火
哈哈,看看你所谓“标准”的现状吧,还这么崇拜——标准是为现实服务的,而不是我们去成全标准——。
不过,还是很高兴的看到 IE在向标准靠拢
04.28.2010 3:42 下午 - 14楼