网站首页 > 技术文章 正文
前言
如果有从网上下载过资料的应该有这样的体验,当我们点击下载的时候会弹出一个新的页面,然后很快就关闭了,并会将文件下载下来。
那么这样的效果是如何实现的呢?其实很简单,通过代码生成一个新的表单,该表单会弹出一个新的页面,在数据传输完毕后自动关闭。
代码实现
我们结合AngularJS来讲解如何实现这一功能。
url必须存在
下载页面是一个具体的http请求,所以必须存在请求的url,如果url不存在则无法下载。
生成新的form表单
通过angular.element('<form>')方法生成一个新的form表单,并设置请求的method,url与target
form表单属性
form表单参数
在下载的时候,我们可能会携带参数,同样可以通过代码去控制。通过angular.element('<input>')生成一个个input元素,然后设置name和value属性,再将生成的input元素添加至form中。
生成input元素
表单提交
通过form.submit()方法提交表单,带有name属性的input元素的value值会提交至请求的url中
表单提交
存在的问题
问题
在chrome浏览器升级至最新版本时,如果使用上述的代码会发现,在下载时点击按钮无效,并会在console控制台有以下的提示:
问题提示
问题原因
chrome官方也对form表单的下载问题作出了解释,是因为form表单脱离了document文档对象,会导致form提交无效
解决方法
将from添加至document文档流中,如果是原生的Javascript代码,则在submit前添加以下代码
原生Javascript代码
如果是AngularJS代码,则在submit前添加以下代码
AngularJS代码
添加以上的代码后,form表单下载就完成了。
完整代码
以下是通过AngularJS完成form表单下载功能的代码
完整代码
总结
今天这篇文章主要是讲的如何通过AngularJS完成form表单下载的功能,你有收获吗?
猜你喜欢
- 2024-10-03 windows系统搭建node.js Vue开发环境图文教程
- 2024-10-03 如何用JavaScript纯前端来实现下载脚本,让后端人员失业去吧
- 2024-10-03 一款思维导图显示编辑javascript类库jsmind
- 2024-10-03 你不知道的javascropt(上、下卷)pdf版下载领取
- 2024-10-03 前端实现最佳截图方案(上)(前端图文教程)
- 2024-10-03 下载文件并使用Javascript将其压缩在浏览器中「云图智联」
- 2024-10-03 我的世界手机版真实js下载(我的世界手机版真实js下载教程)
- 2024-10-03 原生JS封装拖动验证滑块你会吗?「实践」
- 2024-10-03 如何从网络上下载一张图片并保存到本地?
- 2024-10-03 前端工程化应该怎么做?Letjs工程化体系介绍
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)