HTML5 A链接

1.基本使用

  • a标签常用属性:
属性名 说明
href 规定链接的目标 URL
target 已什么形式打开这个连接
  • target属性有以下几个值
属性名 说明
_self 默认,当前页面跳转
_blank 新窗口打开
_parent 在父窗口中打开链接
_top 在当前窗体打开链接,并替换当前的整个窗体(框架页)
framename 在指定的框架中打开被链接文档,通俗的说在特定新窗口打开
  • 示例代码
<a href="http://www.baidu.com">百度一下 (默认,当前页面跳转。)</a>
<br />
<a href="http://www.baidu.com" target="_blank">百度一下 新窗口打开</a>
<br />
<a href="http://www.baidu.com" target="_1">百度一下 特定窗口打开</a>
<br />
<a href="http://www.taobao.com" target="_1">淘宝 特定窗口打开</a>
  • PS:这里解释一下:target="_blank"和target="_1"都会使用新窗口打开目标链接,但是target="_blank"每次点击都会创建新的窗口,而target="_1"初次点击时打开新窗口,以后所有使用target="_1"的窗口都会覆盖刚刚打开的窗口,相当于是一个被命名的新窗口打开。所以后面2个链接重复点击会在一个窗口中相互覆盖

2.下载文件

  • 当目标 URL返回的文档类型是html,img之类能被浏览器直接打开的文件时,浏览器会直接预览这个文件
  • 如果返回的文档类型浏览器无法直接打开,例如表格文件,压缩包等,会弹窗提示用户是否保存
  • 如果想下载img之类能直接预览的文档,则需要添加download属性(这个值就是文件下载时的文件名。默认是链接的文件名)
  • 跨域时 download 属性无效,所以跨域资源能预览的直接预览,不能预览的的直接下载

同源资源:

<body>
    <a href="./resource/kof.jpg">预览图片</a>
    <br />
    <!-- 文件名默认为 热血足球.jpg-->
    <a href="./resource/热血足球.xlsx">下载文档</a>
    <br />
    <!-- 文件名默认为 kof.jpg-->
    <a href="./resource/kof.jpg" download>下载图片</a>
    <br />
    <!-- 文件名默认为 xxx.jpg-->
    <a href="./resource/kof.jpg" download="xxx">下载图片 (改名)</a>
    <br />
    <!-- 文件名默认为 a.jpg-->
    <a href="./resource/热血足球.xlsx" download="a">下载文档(改名)</a>
</body>

跨域资源:

<body>
    <!-- 跨域时 download 属性无效-->

    <!-- 下载文件名 热血足球.xlsx-->
    <a href="http://127.0.0.1:8090/热血足球.xlsx">跨域下载文档</a>
    <br />
    <!-- 下载文件名 热血足球.xlsx 改名无效-->
    <a href="http://127.0.0.1:8090/热血足球.xlsx" download="xxx">跨域下载文档 (改名)</a>
    <br />
    <!-- 无法下载 直接预览打开-->
    <a href="http://127.0.0.1:8090/kof.jpg" download="xxx">跨域下载图片 (改名)</a>
</body>

3.使用js下载资源

  • 如果是资源是浏览器无法直接打开的类型,那么直接跳转到指定url即可,代码如下
<script>
    window.open('http://127.0.0.1:8090/热血足球.xlsx')
</script>
  • 如果资源是图片类型,这种方法就会直接预览图片,需要创建一个a链接,设定download属性来下载(无法下载跨域的图片资源文件,只能预览)
<script>
    var btn = document.querySelector('#btn')
    btn.onclick = function(){
        //window.location = 'http://127.0.0.1:8090/kof.jpg'
        downloadImg('./resource/kof.jpg','filename')
    }

    function downloadImg(url,name){
        //创建a标签
        var node_a = document.createElement('a')
        //添加属性
        node_a.innerHTML = '下载图片'
        node_a.href = url
        node_a.download = name || ''
        //触发点击事件
        console.log('触发点击事件')
        node_a.click()
    }
</script>

4.下载跨域服务器的图片资源

  • 原生的方法无法直接下载跨域图片资源,这里使用一些方法避开这个限制,把图片转换成base64,来达到下载跨域服务器的图片资源的功能
<script>
    var btn = document.querySelector('#btn')
    btn.onclick = function(){
        //window.location = 'http://127.0.0.1:8090/kof.jpg'
        downloadImg2('./resource/kof.jpg','filename')
    }


    // 使用iamge对象还在url对应的托
    // 使用canvas加载图片并转换成base64格式
    function downloadImg2(url,name){
        //1.创建iamge对象加载图片
        var image = new Image()
        image.src = url
        image.onload = function(){
            //2.加载成功,贮备绘制到canvas中
            var canvas = document.createElement('canvas')
            var ctx = canvas.getContext('2d')
            //2.1设定canvas大小
            canvas.width = image.width;
            canvas.height = image.height;
            //2.2绘制图片
            ctx.drawImage(image,0,0)
            //2.3转换成base64
            var imgurl = canvas.toDataURL("image/png")
            //3.创建a标签
            var node_a = document.createElement('a')
            //3.1添加属性
            node_a.innerHTML = '下载图片'
            node_a.href = url
            node_a.download = name || ''
            //3.2触发点击事件
            console.log('触发点击事件')
            node_a.click()
        }
    }
</script>

5.全局控制

  • 通过base标签指定网页内部的所有相对 URL 的计算基准,不建议使用
<head>
<base href="https://www.example.com/files/" target="_blank">
</head>
posted @ 2020-12-02 17:31  ---空白---  阅读(448)  评论(0编辑  收藏  举报