记HTML5 <a> 标签的一个小坑

作者: 艾特老干部 | 来源:发表于2017-10-12 09:53 被阅读196次

今天写了段简单的代码,点击<a>标签时却抛出了这个错误:Uncaught TypeError: download is not a function。代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Test</title>
    <script>
        function download() {
            console.log(1);
        }
    </script>
</head>
<body>
    <a onclick="download()">下载</a>
</body>
</html>

<script>内明明已经定义了download函数,为什么还会报download is not a function的错误呢?

于是,按下面的步骤尝试排查问题:

  1. 把<a>标签换成别的标签,尝试了<button>标签,结果点击按钮后,download函数就可以正常执行了,说明download函数是存在的,问题还出在<a>上。
  2. 把<button>改回<a>,修改download函数名为download1,结果download1是可以正常执行的。再联系Uncaught TypeError: download is not a function,怀疑<a>标签onclick方法执行时,查找到的download并非外部定义的download函数,onclick执行时的上下文对象应该已经存在download的定义了,且这个定义是一个属性,而不是函数。
  3. 于是查了下w3c的文档,http://www.w3school.com.cn/tags/att_a_download.asp。 真相大白了,原来HTML 5 中的<a> 标签新增了一个download属性,规定被下载的超链接目标。所以,onclick执行时,download指向的是<a> 标签对象中的download属性,因此才会抛出上面的错误。
  4. 既然找到了问题的原因,除了避免使用download作为函数名外,很容易想到另外一个解决方案,通过window引用download函数:
   <a onclick="window.download()">下载</a>

欢迎关注我的公众号:老干部的大前端,领取21本大前端精选书籍!

image

相关文章

  • 记HTML5 <a> 标签的一个小坑

    今天写了段简单的代码,点击 标签时却抛出了这个错误:Uncaught TypeError: download is...

  • <a>标签

    使用 标签可实现超链接,它在网页制作中可以说是无处不在,只要有链接的地方,就会有这个标签。 语法: 链接显示的文本...

  • HTML中的<a></a>标签

    是html中非常常用且重要的标签,本文将会介绍 的各种属性以及一些使用经验。 属性 hrefhref是 中最重...

  • <a>超链接标签

    使用 标签可实现超链接,它在网页制作中可以说是无处不在,只要有链接的地方,就会有这个标签。 语法: 链接显示的文本...

  • <a><image/></a>

    a元素下有一个匿名文本,这个文本外有一个匿名行级盒子,它有的默认vertical-align是baseline的,...

  • <a><image/></a>

    大地Dudy,前端工程师 / 全栈开发工程师 a元素下有一个匿名文本,这个文本外有一个匿名行级盒子,它有的默认ve...

  • html5 video 移动端填坑记分享

    今天小编给大家分享的是html5 video 移动端填坑记,别的不多说了,下面和扣丁学堂html5培训小编一起来看...

  • 关于<a>标签的知识点

    a标签跳转页面为GET请求,无法使用post请求 href属性 1.伪协议 写法一:在href中使用js代码。 写...

  • iOS 正则表达(一) <a>标签的处理

    首先你需要第三方RegexKitLite以及YYKit 1. 我们先来说说RegexKitLite的导入 你可以在...

  • HTML5语法,标签, 属性

    @(HTML5)[HTML5 语法, HTML5标签, HTML5属性] [TOC] 一 、HTML5语法,标签,...

网友评论

    本文标题:记HTML5 <a> 标签的一个小坑

    本文链接:https://www.haomeiwen.com/subject/wmdnyxtx.html