JavaScript实现按Ctrl键打开新页面
(译者注: 本文解决的是按 Ctrl键时使用JS打开新页面的问题)
在简化的HTML5规范中,允许在 A 标签内包含多个 DIV 和/或其他块级元素. 现在只要用 <a> 标签包住块元素,就能搞定原来需要用JavaScript来监听并调用 window.location 实现页面跳转(redirect)功能.
但使用<a>标签的这种包装形式也有不好使的情况 —— 例如,某个块元素(block)内还有一些 <a> 标签, 这种情况下我们只想在点击parent中<a>以外的其他部分时才跳转到一个给定的地址。
当然,像下面这样用一个简单的listener 也能实现我们的需求:
someElement.addEventListener('click', function(e) {
// URL地址是什么都行,或者你也可以使用其他的代码来指定.
// 此处用的是该元素的 `data-src` DOM属性(attribute)
window.location = someElement.get('data-url');
});
…但这有时会有很糟的用户体验, 当按住CTRL键(Mac是COMMAND键),再用鼠标点击时,它会在同一个(标签页)窗口内打开链接。知道有这个问题,你肯定想到了该如何去解决.我们修改一小点代码就能达成这个目的,赶快花点时间去修复你的listener吧:
someElement.addEventListener('click', function(e) {
// 获取URL
var url = someElement.get('data-url');
// 判断是否按下了CTRL键
if(e.metaKey || e.ctrlKey || e.button === 1) {
window.open(url);
} else {
window.location = url;
}
});
原文作者已经在 http://davidwalsh.name/ 网站上实现了这个功能,在使用window.location进行页面重定向时你也应该记得这一点。这是一个很小的代码改进,但对可用性的提高却是非常重要的!
相关文章
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
这篇文章主要为大家极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg,是一款基于jquery和bootstrap的可视化编辑器,感兴趣的小伙伴们可以参考一下2016-05-05
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
这篇文章主要介绍了JavaScript(js)处理的HTML事件、键盘事件、鼠标事件,结合实例形式分析了JavaScript针对HTML事件、键盘事件及鼠标事件的简单处理方法,需要的朋友可以参考下2019-11-11
一文让您了解document.forms和document.formName的兼容性分析
今天在代码中不小心写了两个name相同的form表单,然后通过document.forms[formName]形式获取到的只有第一个表单,然后深入学习了下document.forms[formName]和document.formName的区别和兼容性2025-03-03
JS实现点击网页判断是否安装app并打开否则跳转app store
这篇文章主要介绍了JS实现点击网页判断是否安装app并打开否则跳转app store的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下2016-11-11


最新评论