首页 > 其他分享 >a标签跳转下载 并且阻止新网页跳转

a标签跳转下载 并且阻止新网页跳转

时间:2023-02-14 23:44:23浏览次数:42  
标签:return link2 标签 网页 跳转 false 下载

利用a标签下载

一、a标签下载文件

<a href="完整下载地址"></a>

但是这样会有一个问题,就是下载是可以下载了,但是同样触发了a标签的页面跳转功能。

<a :href="`${完整的下载地址}`" target="downloadFile">{{文件名称}}</a>
<iframe style="display: none;" name="downloadFile"></iframe>

二. 动态生成a标签下载

// 用fetch发送请求 对请求回来的二进制文件流进行处理
fetch('/upload/user.png').then((res) => {
  res.blob().then((blob) => {
    const blobUrl = window.URL.createObjectURL(blob);
    // 这里的文件名根据实际情况从响应头或者url里获取
    const filename = 'user.txt';
    const a = document.createElement('a');
    a.href = blobUrl;
    a.download = filename;
    a.click();
    window.URL.revokeObjectURL(blobUrl);
  });
});

注:如果遇到下载 txt、jpg 等文件时出现直接打开文件而不是下载文件的情况时,可以在下载地址即 url 后拼接 ‘?response-content-type=application/octet-stream’ 即可

三. 阻止a标签跳转的5中方法

  • 在标签里面添加点击事件,直接 return false

<a href="https://www.jd.com" onclick="alert('哈哈');return false;">跳转1</a>

  • 在函数内直接return false (用的最多)
<a href="https://www.jd.com" id='link2'>跳转2</a>
<script>
 let link2 = document.getElementById('link2');
 link2.onclick = function(){
 alert('呵呵');
 return false;
}
</script>
  • 这种方法类似2,在函数内return false 然后a再调用,调用没有括号
<a href="https://www.jd.com" id='link3'>跳转3</a>
<script>
 let link3 = document.getElementById('link3');
 link2.onclick =text;                         //注意这里不加括号
 function text(){
 alert('呵呵');
 return false;
}
</script>
  • 点击a,调用test方法,得到的false返回值再返回给a标签
<a href="https://www.jd.com" onclick="return test()" id="link4">跳转4</a>
<script>
 function text(){
 alert('呵呵');
 return false;
}
</script>
  • 京东网站的写法,很常用
    <a href="javascript:void(0);" onclick="test()" id="link5">跳转5</a>

标签:return,link2,标签,网页,跳转,false,下载
From: https://www.cnblogs.com/wanglei1900/p/17121259.html

相关文章

  • 分支和跳转
    前面介绍了循环语句,现在接着介绍另外的C控制语句:分支语句和跳转语句,让程序根据测试条件执行相应的行为。以及介绍逻辑运算符,使用逻辑运算符能在while和if的条件中测试更多的......
  • 个人站点分类-标签-归档
    效果图:  前端代码:前端每个用户页面样式.CSS文件(标签文字颜色)及数据库外键注意点后端代码:  前后端代码对应:......
  • 爬取url遇到302跳转问题怎么解决?
    最近在做爬虫项目遇到一个问题,这里简单的描述下让大家帮忙看下。目标网站需要完成一一系列登录操作,经过抓包测试只需要使用简单的post请求后收到的回包中包含cookie信息,因此......
  • Vue3使用vue-router如何实现路由跳转与参数获取
    //跳转传参import{useRouter,useRoute}from'vue-router';constrouter=useRouter()constroute=useRoute()//新开页functionjump(id){consturl=router.......
  • 禁用a标签点击事件
     a标签是没有disable属性的,如果想用disable禁用a标签的点击事件,也可以实现;1.a标签要用disable属性,必须和pointer-events属性一起使用,html代码:<aid="test">测试</a......
  • video标签使用controls属性怎么去掉三个点
    当video标签使用controls属性的时候。pc电脑会显示三个点,可以利用controlslist属性进行设置 1、nodownload:不要下载按钮2、nofullscreen:不要全屏按钮3、noremotepla......
  • jquery获得标签的值或元素的内容
       例如:.html()获取a标签中的i元素console.error($("a[name="+index+"]").html()); 设置a标签里的i标签元素,换样式$("a[name="+index+"]").html(......
  • 标签 样式
    样式一效果图:<!DOCTYPEhtml><htmllang="en"><head> <metacharset="UTF-8"> <metahttp-equiv="X-UA-Compatible"content="IE=edge"> <metaname="viewport"c......
  • H.265网页播放器EasyPlayer添加sei数据导致视频花屏该如何解决?
    EasyPlayer属于TSINGSEE青犀视频研发的性能稳定、播放流畅的H.265视频流媒体播放器,可支持的视频流格式有RTSP、RTMP、HLS、FLV、WebRTC等,支持高清画面秒开、视频播放流畅,具......
  • 标签
    publicclassTest{publicstaticvoidmain(String[]args){System.out.println("Hello!");Lo:for(inti=0;i<=3;i++){for......