如果标题换做“用户体验”,感觉大了些,自己毕竟不是这方面的专家,在这里只是谈谈自己的感受。
我还记得很早的时候自己学做网页制作,那时不晓得链接如何从新窗口打开,也不关心这些,因为网页 只是起到一个宣传简介的作用,后来多了友情链接这个东东,是的,那时还没有多标签多选项卡的浏览器出现,大家都用着IE6之类的窗口浏览器,于是那时候大 家养成了个习惯,就是打开一个页面,等浏览结束后下意识的去关浏览窗口,岂不知这个页面的上一页自己也需要,或者网站作者并不希望浏览者点了外部链接后就 脱离自己的网站,因为站长们认为自己网站还有更精彩的浏览者并没有发现……精心开发5年的UI前端框架!
正是由于这些原因,于是广大站长纷纷采用了外部链接的新窗口打开的模式,新窗口打开,无非就是采用JavaScript的window.open办法或者target=”_blank”的方法,由于后者不需要脚本支持所以实际采用多一些。这样以来似乎已经很完美了,真的是这样吗?这些网站继续培养了浏览者盲目按×关闭窗口的习惯,或许他们应该尝试着新的方式那就是按Shift加鼠标左键新窗口打开网页。
终于有一天新的标准XHTML 1.0出现了,广大站长纷纷发现原来的target=”_blank”不能通过标准了,于是大家开始思考:“我们到底做错了什么?”。我们到底做错了什么?大家可以参考这篇 《_blank开新窗口不符合标准?》大 家应该知道是怎么回事了,不加限制的开新窗口说到底是剥夺了用户的选择权,用户有权利选择是原窗口打开还是新窗口打开,我们必须将设计由以自我为中心转变 为以用户为中心,为用户考虑,但是话又说回来了,在中国这种新窗口打开的模式挺符合国情的,大家都默认并习惯了,当你把选择权交给用户时,用户突然变得不 知所措,甚至会怪罪于你的设计,你明明是为用户想的,偏偏用户不领情。
那我们究竟还要不要新开窗口,有没有比较好的做法?至少我认为MSDN的做法是值得我们借鉴的,MSDN在外部链接的旁边放置了个小图标标示着这个链接是个外部链接,但是实际还是本窗口打开的。
我们何不把这个小图标利用起来,也就是说点击链接是本窗口打开,点击旁边的小图标就新窗口打开,这样貌似这个问题到这里就合理解决了,这个解决方案很早就有了,也是我认为比较好的一个办法,当然大家如果有什么更好的方法可以和我讨论。精心开发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); })();
相关推荐
### window.open 打开新窗口参数设置详解 在前端开发中,`window.open()` 方法是浏览器内置的一个功能,用于在JavaScript中打开新的浏览器窗口。本文将深入探讨如何使用 `window.open()` 方法及其参数设置,帮助...
2. **Response.Write("<script>window.open(XXX.aspx','_blank')</script>")**:通过JavaScript的`window.open()`函数在新窗口中打开"XXX.aspx"。`_blank`参数指示在新窗口或新标签中打开页面,原窗口保持不变。 3....
总的来说,jQuery提供了一种简便的方式来处理外部链接在新窗口打开的需求,通过正则匹配和事件监听或属性修改,我们可以轻松地实现这一功能。在进行网页开发时,合理利用jQuery可以提高代码的可读性和效率,同时也能...
第一种方法适合于只想改变特定类别的链接行为,第二种方法则是全局性改变所有链接的行为,而第三种则提供了一种更为灵活的选择,允许你基于链接的其他属性来决定是否在新窗口打开。 在使用这些方法时,需要注意的是...
对于这样的需求,Vue Router提供了一种编程式导航的方式,我们可以利用其API实现打开新窗口的功能。 一、Vue Router的基础知识 Vue Router允许我们定义应用中可能有的各种视图所对应的URL。使用路由对象来管理整个...
async: false, // 使用同步提交以避免浏览器拦截新窗口打开 success: function(oData) { ssoAction(); } }); } }); } return false; // 阻止默认的链接行为 }); ``` 在这个代码片段中,我们监听所有`<a>`...
4. **JavaScript事件处理**:利用JavaScript,论坛可以控制链接的点击行为,决定是在当前页面打开还是新窗口打开。 5. **浏览器兼容性**:由于不同的浏览器可能有不同的默认行为,Discuz!X3.2需要确保其外部链接本地...
例如,在新闻列表页使用当前页跳转,而在内容页使用新窗口打开链接。选择恰当的打开方式,可以在不干扰用户当前阅读状态的同时,提供更好的内容访问体验。 总结而言,超级链接的提示方式和打开方式对于提升网站的...
新窗口打开 ``` 2. **rel**:定义链接关系,常用于定义链接是否为`noopener`,以避免跨窗口脚本注入问题。 3. **title**:提供链接的额外信息,通常作为鼠标悬停时的提示文本。 ```html 这是个示例链接">访问示例...
4. **用户选择**:尊重用户的浏览习惯,提供设置选项,允许用户根据自己的偏好调整链接的打开方式,如始终在新选项卡中打开弹出窗口。 总的来说,超级链接的表现形式和打开方式需兼顾功能性和美学,以提高用户体验...
而该插件通过设置,可以选择在当前窗口内打开链接,或者在新窗口中打开,甚至可以启用预览模式,让用户在确认无误后再决定是否真正访问,降低了潜在的风险。 此外,这款插件还允许管理员对特定链接进行定制,比如...
然而,现代浏览器为了用户体验,可能会遵循用户设置,如禁用新窗口打开链接,此时`_blank`可能依然会在当前标签页打开。 3. `target="_parent"`:如果当前页面是在框架内打开的,`_parent`会使链接在包含当前页面的...
- target="_self":在当前页面窗口打开链接,即不会新开页面。 - target="_blank":在新的页面或标签页中打开链接。 首先,百度百科的做法比较灵活。如果链接的header(可能是指页面的头部内容,如导航栏)与当前...
在打开新窗口的时候,很多时候开发者希望这个新窗口能够自动居中显示在用户的屏幕上,以提升用户体验。在本篇文章中,我们将探讨如何使用JavaScript脚本来实现这个需求。 首先,需要注意的是,这个功能并不是所有的...
在网页开发中,`window.open` 方法是用于打开新窗口或标签页的一个非常实用的功能。此方法常被用在各种场景下,例如:弹出广告、登录框、信息提示等。 #### 方法语法 ```javascript window.open(url, target, ...
而一些特定操作如发表新贴、查看短信等,可能会在新窗口打开,以方便用户返回原来的位置。 - 注册向导:在整个注册过程中,`_blank`可以用于创建新窗口,让用户逐步完成注册,而`_self`用于步骤间的前进,确保用户...
在网页开发过程中,有时会遇到使用JavaScript的`window.open`函数打开新窗口被浏览器拦截的情况。这通常是由于浏览器的安全策略导致的,特别是像Chrome这样的现代浏览器,为了防止弹窗广告等不良用户体验,对`window...
`target`属性用于指定链接在何处打开,`_blank`表示在新窗口或标签页中打开。`alt`和`title`属性则为链接提供替代文本,对于无障碍访问和搜索引擎优化至关重要,它们分别在图片无法显示或鼠标悬停时显示文本信息。 ...
此代码实现的功能是,当访问者点击页面上的QQ图标时,会以新窗口的方式打开与QQ号码971928937的即时聊天界面,提供了一种便捷的在线沟通方式。 ### 四、注意事项 1. **兼容性**:虽然大多数现代浏览器支持此类链接...
通过`target`属性,可以控制链接在何处打开,如`_blank`会在新窗口或标签页中打开,`_self`则在当前窗口或标签页中打开。 此外,网页链接还可以包含锚点链接,用于在同一个页面内跳转。锚点由`#`符号后跟一个标识符...