`

谈新窗口打开链接的合理方式

阅读更多

如果标题换做“用户体验”,感觉大了些,自己毕竟不是这方面的专家,在这里只是谈谈自己的感受。

我还记得很早的时候自己学做网页制作,那时不晓得链接如何从新窗口打开,也不关心这些,因为网页 只是起到一个宣传简介的作用,后来多了友情链接这个东东,是的,那时还没有多标签多选项卡的浏览器出现,大家都用着IE6之类的窗口浏览器,于是那时候大 家养成了个习惯,就是打开一个页面,等浏览结束后下意识的去关浏览窗口,岂不知这个页面的上一页自己也需要,或者网站作者并不希望浏览者点了外部链接后就 脱离自己的网站,因为站长们认为自己网站还有更精彩的浏览者并没有发现……精心开发5年的UI前端框架!

正是由于这些原因,于是广大站长纷纷采用了外部链接的新窗口打开的模式,新窗口打开,无非就是采用JavaScript的window.open办法或者target=”_blank”的方法,由于后者不需要脚本支持所以实际采用多一些。这样以来似乎已经很完美了,真的是这样吗?这些网站继续培养了浏览者盲目按×关闭窗口的习惯,或许他们应该尝试着新的方式那就是按Shift加鼠标左键新窗口打开网页。

终于有一天新的标准XHTML 1.0出现了,广大站长纷纷发现原来的target=”_blank”不能通过标准了,于是大家开始思考:“我们到底做错了什么?”。我们到底做错了什么?大家可以参考这篇 《_blank开新窗口不符合标准?》大 家应该知道是怎么回事了,不加限制的开新窗口说到底是剥夺了用户的选择权,用户有权利选择是原窗口打开还是新窗口打开,我们必须将设计由以自我为中心转变 为以用户为中心,为用户考虑,但是话又说回来了,在中国这种新窗口打开的模式挺符合国情的,大家都默认并习惯了,当你把选择权交给用户时,用户突然变得不 知所措,甚至会怪罪于你的设计,你明明是为用户想的,偏偏用户不领情。

那我们究竟还要不要新开窗口,有没有比较好的做法?至少我认为MSDN的做法是值得我们借鉴的,MSDN在外部链接的旁边放置了个小图标标示着这个链接是个外部链接,但是实际还是本窗口打开的。

MSDN新窗口打开.png

我们何不把这个小图标利用起来,也就是说点击链接是本窗口打开,点击旁边的小图标就新窗口打开,这样貌似这个问题到这里就合理解决了,这个解决方案很早就有了,也是我认为比较好的一个办法,当然大家如果有什么更好的方法可以和我讨论。精心开发5年的UI前端框架!

附加贴上自动识别并加上外部链接图标的JavaScript代码:

(function (){
var window = this, undefined;
     
function addListener(element, e, fn) {
    if (element.addEventListener) {
        element.addEventListener(e, fn, false);
    } else {
        element.attachEvent("on" + e, fn);
    }
}
     
var outlinks =  {
  protocol : /^(?:http|https|ftp|mms):(?:\/\/|\\\\)/i,
  local_url : location.hostname, // 获取本地域名
  icon : 'outlink.png', // 请改成自己的图标路径
     
  set : function(obj, list) {
    for (var i = 0; i < list.length; i++) {
      obj.setAttribute(list[i][0], list[i][1]);
    }
  },
  create : function(anchor) {
    var space = document.createTextNode(' '),
      link = document.createElement('a'),
      img = document.createElement('img'),
      text = '新窗口打开';
     
    outlinks.set(link, [['href', anchor.href],
              ['target', '_blank'],
              ['title', text]]);
    outlinks.set(img, [['alt', text],
              ['src', outlinks.icon],
              ['height', 13],
              ['width', 13],
              ['border', 0]]);
    img.style.verticalAlign='middle';
    link.style.background = 'none';
    link.style.margin = '0';
    link.style.padding = '0';
    img.style.margin = '0';
    img.style.padding = '0';
    link.appendChild(img);
    anchor.parentNode.insertBefore(space,
                    anchor.nextSibling);
        anchor.parentNode.insertBefore(link,
                    anchor.nextSibling
                    .nextSibling);
  },
     
  init : function() {
    try {
      var anchor,
        anchors = document.getElementsByTagName('a');
      for (var i=0; i<anchors.length; i++) {
        anchor = anchors[i];
        if (
          anchor.href &&
          // 跳过加了链接的图片
          !anchor.getElementsByTagName('img')[0] &&
          outlinks.protocol.test(anchor.href) &&
          !anchor.getAttribute('target') &&
          anchor.href.indexOf(outlinks.local_url) < 0) {
            outlinks.create(anchor);
        }
    }
    }catch(e) { alert(e.message);}
  }
}
     
addListener(window, 'load', outlinks.init);
     
})();

 

0
0
分享到:
评论

相关推荐

    jasmine-openWindow:打开窗口插件

    编写一个jQuery插件,在给定包含锚元素(例如$('a'))的jQuery对象的情况下,单击这些元素可在新窗口中打开链接目标。 该插件应: ●确保在同一窗口中打开具有相同数据窗口组的链接 ●使用用于在新窗口中设置...

    网站推广分析方案.doc

    尽可能少的去要求用户使用前进后退按钮,合理的选择链接页面是否在新窗口打开。 3.少用图片作为栏目标题,尽可能让搜索引擎全方位的吸收页面的所有内容。 网页的 META 标签的设计、页面标题(Title)的选择:站内优化...

    浅谈计算机网页设计中图形设计的处理运用.doc

    因为毫无章程、平庸无奇、没有美感的网页很难吸引到浏览者的,更不会使访问者 去打开页面上的其它窗口。要知道第一印象很重要,直接影响访问者能否再次光顾改网 页。 传统计算机图形艺术作品在设计的过程中看重的是...

    HTML:超文本标题语言

    链接" target="blank"&gt;文本或者图片在新的窗口打开链接 文本或者图片暂时没有设置链接。 锚点链接标题&lt;/a&gt; 跳转到标题处(在一个页面上) &lt;p id=""&gt; 设置锚点链接的id base &lt;!--内容--&gt;注释标签 是上一...

    Image For Homepage1.3首页显示日志缩略图插件 for Wordpress.zip

    如下重要改进,建议所有使用这个插件的用户升级(当然,如果你觉得1.0版足够使用,也可以选择继续使用): 1、使得创建缓存文件夹更为智能,能够自动为...如果想在同一个窗口打开文章,则将IFHL_blank改为IFHL即可。

    易语言5.0正式版破解补丁(打开验证易文件,运行验证即可)

     静态编译后的易语言可执行程序(exe)和动态链接库(dll),运行时不再依赖任何支持库文件,文件尺寸更小(相对以前的独立编译),PE结构更合理(取消了“易格式体”),加载速度更快,而且有效解决了“病毒误报”和...

    中职网页设计比赛方案.doc

    子页面及父页面方便返回访问,打开/关闭窗口较为轻易 没有空链接和错误链接。 3. 版面与视觉感受(40分) 浏览页面时不得出现乱码,无因布局不合理而出现的表格错位情况 图片使用得当,网页内各个元素搭配合理,...

    新版计算机应用基础简答题(附答案).doc

    显示出于当前窗口操作相关的一些任务及链接。 (6)状态栏。显示当前的操作状态。 4. 屏幕保护程序的作用是什么?如何设置屏幕保护程序? 答:在用户在预定的时间内没有操作计算机,程序会自动执行,通常是亮度较低...

    计算机应用基础简答题(附答案).doc

    显示出于当前窗口操作相关得一些任务及链接。 (6)状态栏。显示当前得操作状态。 4、 屏幕保护程序得作用就是什么?如何设置屏幕保护程序? 答:在用户在预定得时间内没有操作计算机,程序会自动执行,通常就是亮度较低得...

    Excel VBA实用技巧大全 附书源码

    02012判断工作簿是否为以只读方式打开的 02013判断工作簿是否为加载宏工作簿 02014获取所有打开的工作簿名称 02015获取当前活动工作簿的名称 02016获取当前宏代码运行的工作簿名称 02017获取所有打开的工作簿路径 ...

    最新版114啦2010.9.23更新.rar

    .# 修复名站切换栏“我的收藏”网址IE浏览器下不在新窗口打开的Bug; .# 修复部分环境下后台左侧菜单不显示的Bug; .# 改进批量导入网址功能; .# 修正清空关键词分类后静态生成出错的Bug; .# 修正生成分类为空...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    鉴于市场上用户的手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作...

    Access+2000中文版高级编程

    12.3.2 添加超级链接 370 12.3.3 在数据访问页中使用表达式 374 12.3.4 使用绑定的组合框和列表框 375 12.3.5 使用主题格式化 378 12.3.6 数据访问页所使用的其他控件 378 12.4 分组的数据访问页:Web报表...

    Access 2000中文版高级编程(part1)

    10.2.6 根据用户的输入添加新的组合框选项 271 10.3 使用本机的Access选项卡控件 273 10.3.1 本机的选项卡控件概述 273 10.3.2 创建并编辑新的选项卡控件 275 10.3.3 在选项卡控件中移动页 277 10.3.4 在选项...

    易语言程序免安装版下载

     静态编译后的易语言可执行程序(exe)和动态链接库(dll),运行时不再依赖任何支持库文件,文件尺寸更小(相对以前的独立编译),PE结构更合理(取消了“易格式体”),加载速度更快,而且有效解决了“病毒误报”和...

    CCTalk4-5-18-92.exe

    9.修复打开教室窗口时,教室名称显示较慢的问题 10.修复教室窗口在系统任务栏上没有显示名称的问题 11.修复“主面板-我的教室”里添加按钮打开界面不对的问题 12.修复某些情况下挂机时CT崩溃的问题 CCTalk4.5.17.88...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!", String.Empty, ExtAspNet.ActiveWindow.GetCloseReference());...

    网址网站导航整站源码

    .# 修复名站切换栏“我的收藏”网址IE浏览器下不在新窗口打开的Bug; .# 修复部分环境下后台左侧菜单不显示的Bug; .# 改进批量导入网址功能; .# 修正清空关键词分类后静态生成出错的Bug; .# 修正生成分类为空分类...

    傲游浏览器3(Maxthon) 3.1.8.1000 正式版

    * 极速模式直接打开某些 FTP 下载链接时, 会提示无法连接到网站. [资源嗅探器] * 有时修改语言会导致嗅探器中的资源列表消失. [数据同步] * 不编辑过滤规则点击 "应用" 时, 会错误的进行同步. [阅读模式] * 已经...

    网上购物系统

    打开新的窗口。 &lt;p&gt;&nbsp; 除最新网上购物系统 了购物篮中的可视化操作外,还有就是商品购入事件(即在网上商店的点击最新网上购物系统 购买的事件)。现在我们称这些事件是用来触发购物篮中的工作模式,在最新网上...

Global site tag (gtag.js) - Google Analytics