JavaScript实现按Ctrl键打开新页面

 更新时间:2014年09月04日 09:33:01   投稿:junjie  
这篇文章主要介绍了JavaScript实现按Ctrl键打开新页面的例子,本文方法适用HTML5环境中,需要的朋友可以参考下

(译者注: 本文解决的是按 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进行页面重定向时你也应该记得这一点。这是一个很小的代码改进,但对可用性的提高却是非常重要的!

相关文章

  • 原生js实现轮播图

    原生js实现轮播图

    这篇文章主要为大家详细介绍了原生js实现轮播图的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 对layui数据表格动态cols(字段)动态变化详解

    对layui数据表格动态cols(字段)动态变化详解

    今天小编就为大家分享一篇对layui数据表格动态cols(字段)动态变化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • JavaScript 高性能数组去重的方法

    JavaScript 高性能数组去重的方法

    这篇文章主要介绍了JavaScript 高性能数组去重的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • JavaScript调试工具汇总

    JavaScript调试工具汇总

    这篇文章主要介绍了7款基于桌面和WEB的JavaScript调试工具,更有效地处理动态类型使应用程序更符合编码标准,不管你是新学习javascript的菜鸟还是业界大神,都非常的有用。
    2014-12-12
  • JS区分浏览器页面是刷新还是关闭

    JS区分浏览器页面是刷新还是关闭

    在web开发中我们经常各种各样的需求。今天小编给大家介绍JS区分浏览器页面是刷新还是关闭标签页,非常实用,感兴趣的童鞋参考下吧
    2016-04-04
  • Bootstrap模态框使用详解

    Bootstrap模态框使用详解

    这篇文章主要为大家详细介绍了Bootstrap模态框的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • layui使用表格渲染获取行数据的例子

    layui使用表格渲染获取行数据的例子

    今天小编就为大家分享一篇layui使用表格渲染获取行数据的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JSONPath使用指南和实用技巧(掌握JSON数据提取)

    JSONPath使用指南和实用技巧(掌握JSON数据提取)

    这篇文章主要给大家介绍了关于JSONPath使用指南和实用技巧的相关资料,JsonPath,类似于XPath在XML中的作用,其提供了对格式Json数据的解析能力,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • JS实现批量上传文件并显示进度功能

    JS实现批量上传文件并显示进度功能

    这篇文章主要介绍了JS实现批量上传文件并显示进度功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-06-06
  • JavaScript 错误捕获与处理的完整指南

    JavaScript 错误捕获与处理的完整指南

    在JavaScript中捕获错误通常有四种方式,try-catch 语句块,Promise 的 catch 方法,throw 语句以及window.onerror事件处理程序,并通过代码示例给大家讲解的非常详细,需要的朋友可以参考下
    2024-02-02

最新评论