由于代码的迭代,导致IE已经完全不支持大部分hexo博客了。但是IE在国内还是拥有着一定的份额,而且还不算是例如360等兼容IE内核的浏览器。
平淡的描述 在js中,能使用特征监测就尽量不要使用浏览器嗅探。嗅探浏览器目的是判断可否使用这个对象或者API,但是抛开浏览器 的各个版本的userAgent不说,还有些浏览器打补丁的情况,造成判断异常复杂,兜了个大的圈子,而特征检测则是直接 了当,不存在维护困难的问题。 其次,当不确定某个版本的浏览器是否有特殊的bug时(如IE8下js访问css的float属性时,是styleFloat, 而在w3c浏览器下是CssFloat;IE8下getElementByTagNames返回NodeList包括
12.JS判断两个日期大小 适合 2012-09-09 与2012-9-9 两种格式的对比
经常使用的 JS 方法,今天记下,以便以后查询 /* 手机类型判断 */ var BrowserInfo = { userAgent: navigator.userAgent.toLowerCase() isAndroid: Boolean(navigator.userAgent.match(/android/ig)), isIphone: Boolean(navigator.userAgent.match(/iphone|ipod/ig)), isIpad: Boolean(navigator.userA
if(window.addEventListener){ alert("not ie"); }else if(window.attachEvent){ alert("is ie"); }else{ alert("这种情况发生在不支持DHTML的老版本浏览器(现在一般都支持)") }
一、前言 苦逼的前端攻城狮都深受浏览器兼容之苦,再完成每一项功能前都要左顾右盼,生怕浏览器不支持某个API,生怕原生API内含臭虫因此判断浏览器类型和版本号成了不可绕过的一道关卡,而特征嗅探是继浏览器探测后另一利器处理上述问题。 二、何为特征嗅探 从前我们都是通过对navigator.userAgent或navigator.appVersion两个属性值进行特定字符串匹配和萃取来
在 form 表单的前端布局中,我们经常需要将文本框的提示文本两端对齐,例如: 比较粗暴的做法是在需要隔离边距的文本中加标签,然后分别控制每个文字的边距,这种方法比直接加空格或者占位符更精准,我之前
本文主要是从程序猿的角度进行分析的,致力于提供解决问题的思路,而不是盲目的从网上百度
前期准备 安装一个打印插件(K-Print) http://kdniao.com/documents-instrument <asp:HiddenField ID="HiddenField1" runat="server" /> <object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" height="0" width="0"> <embed id="LODOP_EM" typ
在web2.0时代,越来越多的网站如雨后春笋般的冒了出来。而且这些网站提供了很多我们常见的功能。如:返回顶部等等小特性。
很多时候,美工会觉得默认的select下拉框很难看(特别是右侧的下拉箭头按钮),他们通常喜欢用一个自定义的图标来代替这个按钮。这样就只能用 js + div 来模拟了,倒腾了一番,用jQuery模拟了下,当然网上这种文章也不少,只是懒得去看找,又重新发明轮子鸟:)
最近遇见angularjs 在IE上当使用ng-options作为select的选项数据源,并且被套在ng-switch(ng-transclude)之类的,当angular上得ng-options数据源model改变后,在IE上并不渲染。
这是一份Js实用小技巧,也可以是一份Js挨打小技巧,下面的一系列操作虽然能够在一定程度上使代码更加简洁,但是在缺少注释的情况下会降低可读性,所以需要谨慎使用这些黑魔法。
很久没有发文了,一是忙上线的事。二是有些颓废了,身体虚弱了,感觉工作没有激情了,不太想写。好了,既然承诺了写下去,那么就坚持吧。
好吧,一个方案一个方案来分析一下(要求是不允许执行Javascript和应用CSS,以免消耗系统资源):
上传文件是工作中常用的功能,不同的场景对不同的文件类型和文件大小都有不同的要求: <form id="uploadForm" method="post" class="layui-form"> <label class="layui-form-label">名称</label> 08不使用定时器实现的onhashchange之前看sparks345 写的《不采用interval方式模仿onHashChange》01js获取浏览器内核和版本(IE版本号)某些情况下,我们需要获取浏览器类型及版本,来做些polyfill之类的。 寻找了一些解决方案,觉得下面这个写法相对完善一些。备忘下。02JS框架设计之对象数组化一种子模块类数组对象是一个很好的存储结构,但是功能太弱了,为了享受纯数组的哪些便捷的方法,使用前可以做下转换,通常可以使用$.slice.call()方法做转换,但是旧版本的IE下的HTMLCollection、NodeList不是Object的子类,如果采用[].slice.call()方法可能会导致异常,下面是各大库是怎么处理的: 1、jQuery的makeArray <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <t05IE之页面加载慢.场景 场景是大屏页面一张深色背景, 里面一些文本元素以及图表展示. 结果在IE下发现加载异常缓慢, 还有部分人员反馈页面卡死. 后台读写优化 默认处理图片逻辑是, ImageIO读取原图, 转成byt07nginx配置基础之rewrite重写URL是非常有用的一个功能,因为它可以让你提高搜索引擎阅读和索引你的网站的能力;而且在你改变了自己的网站结构后,无需要求用户修改他们的书签,无需其他网站修改它们的友情链接;它还可以提高你的网站的安全性;而且通常会让你的网站更加便于使用和更专业。05Javascript中!!是什么运算符?刚看到!!的时候也是一脸懵逼,这tm是什么鬼。 !oObject !!oObject 因此!!不是运算符,它只是使用了两次!运算符。 真实案例 真实案例中常见的一个方法就是用来检测IE版本,请看以下代码: let isIE8 = false; isIE8 = !! navigator.userAgent.match(/MSIE 8.0/);//是否为IE8.0 console.log(isIE8); // returns true or false 如果直接打印以下结果,将会输出Araay或null01html2canvans实现浏览器快速截图(这里有demo哦)更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/12005593403几个比较有意思的JS脚本1.获取内网和公网真实IP地址(引用地址) 代码太长,见原文链接 2.获得flash版本(在线地址) <!DOCTYPE html> <html> <head> <meta charset="ut07Extjs 3.3 tree以下的版本在IE10无法点击的解决办法距上篇文章已过去好几天了,说好的一周发表1到3篇文章,难道都让狗吃了吗?现在才发布一篇而且还是转载的文章。 好了,闲话少叙,切入正题,Extjs前端框架是比较早的前端mvc框架了,可能很多人都没接触过,而且现在也很少有项目用Extjs框架搭建了,原因是什么?那就不得而知了,有人说是Extjs比较重…… 在使用Extjs3.3及以下的版本,在IE10环境中却无法点击树节点,而在IE的其他版本(IE7,IE8,IE9,IE11)均可正常。经过在网上查找资料得知,原因是因为Extjs3.3的ext-all.js中的getAttribute方法不能兼容IE10出错引起。 以下是Extjs3.3的ext-all.js的getAttribute方法02Flash对象插入到网页中的3px问题我记得我已经遇到过,不过今天又遇到了,而且浪费了大量的时候在上面,甚至怀疑自己写的脚本有问题,花了几乎一个下午来调试这个问题。最后发现是样式导致的…03【必备】史上最全的浏览器 CSS & JS Hack 手册(转载)浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异。因此,浏览器兼容成为前端开发人员的必备技能。如果有一份浏览器 Hack 手册,那查询起来就方便多了。这篇文章就向大家分享 Browserhacks 帮我们从网络上收集的各个浏览器特定的 CSS & JavaScript Hack,记得推荐和分享啊!01js实现拖动组件移动效果今天我来给大家介绍一种js特效,这种特效是当你用鼠标点击组件移动到其他地方后,这个组件就定在了那个地方,这种效果通常用来做视图化排版的。下面我来把代码贴出来给大家看看02JavaScript重构技巧 — 对象和值JavaScript 是一种易于学习的编程语言,编写运行并执行某些操作的程序很容易。然而,要编写一段干净的JavaScript 代码是很困难的。01你不可不知的JS面试题(第三期)如图所示,闭包就是一个定义在函数内部的函数,其作用是将函数内部和函数外部连接起来。大家知道,作用域的问题,就是在函数内部定义的变量称为局部变量,外部取不到值。下面我们通过代码来更加详细地看一下:01$nextTick 源码解析nextTick 是 vue中重要的性能优化方式,解析实现原理可以有助于我们更好的理解框架。03Vue.nextTick核心原理相信大家在写vue项目的时候,一定会发现一个神奇的api,Vue.nextTick。为什么说它神奇呢,那是因为在你做某些操作不生效时,将操作写在Vue.nextTick内,就神奇的生效了。那这是什么原因呢?01结合Event Loop谈谈对Vue中nextTick的理解(关于 Event Loop的细节,我写过一篇很详细的总结试图解释清楚Javascript Event Loop[1]。)04vue nextTick源码早之前有分享过vue的nextTick的使用,当时说当数据发生变化,更新后执行回调没有实现,那时候也不知道怎么测试的,其实nextTick方法只是做了一步异步。02我从Vue源码中学到的一些JS编程技巧在我们面试的过程中,经常会遇到问源码的环节,因为优秀的框架通常都会包含很多设计理念跟编程实践。这段时间我一直在看Vue2的源码,发现了很多有意思的实现。虽然现在Vue3都已经发布了,也无法否认Vue2是个优秀的框架这个事实,不影响我们从中学到一些最佳实践。06JavaScript 中常用和必备的一些工具类函数10、获取小程序链接的地址栏参数 GetWxMiniProgramUrlParam01红方块躲避—天才游戏<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>红方块躲避游戏</TIT06JS-检测浏览器类型及版本1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="utf-8"> 6 <title></title> 7 </head> 8 9 <body> 10 <script type="text/javascript"> 11 function myBrowser() { 12 var userAgent =05定位div到窗口固定位置代码来自网络~ /*任意位置浮动固定层*/ /*调用: 1 无参数调用:默认浮动在右下角 $("#id").floatdiv(); 2 内置固定位置浮动 //右下角 $("#id").floatdiv("rightbottom"); //左下角 $("#id").floatdiv("leftbottom"); //右下角 $("#id").floatdiv("rightbottom"); //左上角 $("#id").floatdiv("lefttop"); //右上角 $("#id").floatdiv05数往知来:一次浏览器兼容工作中的知识点分析显然,这是一个bootstrap样式的后台单页应用,用react实现了组件化、用mobx管理状态、引入了fetch等promise异步工具,并且使用了一些日期选择和富文本编辑器插件等第三方库01it图片过滤灰色兼容<template> <svg overflow="hidden" preserveAspectRatio="none slice" :width="width" :height="height"> <image overfl02前端限制上传文件的类型今天在工作中遇到一个需求,需要在上传文件的时候限制上传文件的类型,比如上传图片的就只能上传图片类型的文件。 现将自己在开发中的代码放到我的博客里,以备在以后的开发中再次遇到。就可以直接使用了。09浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabaseCookie 它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于HTTP协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态,保证客户浏览器和服务器通讯时可以知道客户浏览器当前的状态。Cookie就是记录这个状态的容器,Cookie在每次请求的时候都被带回到服务器,从而保证了Server可以知道浏览器当前的状态,由于Cookie会被带回到Server,所以Cookie的内容不能存太多,最多不能超过4K,4K 限制的介绍 http:/09vue的$nextTick的使用+源码分析时隔五个月,我又开始更新公众号博客了。最近自己有点懒散,造成这么长一段时间公众号和博客断更了,在这里对关注我的各位同学们说声抱歉!!02nextTick的原理及运行机制主线程的执行过程就是一个tick,而所有的异步结果都是通过 "任务队列" 来调度。消息队列中存放的是一个个 macro task 结束后,都要清空 所有的 micro task。05JavaScript IE9以下浏览器版本升级提示 <html> <body> <script> var userAgent = navigator.userAgent; var isOpera = userAgent.indexOf("Opera") > -1; var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; if (isIE) { var IE5 = IE55 = I02JS的一些技巧根据当前文字选择返回 TextRange 对象,或根据控件选择返回 ControlRange 对象。03【Angular教程】自定义管道这是我参与8月更文挑战的第10天,活动详情查看:8月更文挑战 一、管道的作用 方便我们在模板中对我们的数据进行格式化处理。 二、内置的常用管道 具体API参照官网查询使用 DatePipe: 格式化日期 UpperCasePipe: 文本转为全部大写 LowerCasePipe: 文本转为全部小写 TitleCasePipe: 文本转为标标题形式(如: hello world=>Hello World) KeyValuePipe: 将对象转为键值对形式 JsonPipe: 转为JSON字符串02前端限制上传文件的类型今天在工作中遇到一个需求,需要在上传文件的时候限制上传文件的类型,比如上传图片的就只能上传图片类型的文件。 现将自己在开发中的代码放到我的博客里,以备在以后的开发中再次遇到。就可以直接使用了。 这里就放一个小demo了。代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="file" name="contractFil06
之前看sparks345 写的《不采用interval方式模仿onHashChange》
某些情况下,我们需要获取浏览器类型及版本,来做些polyfill之类的。 寻找了一些解决方案,觉得下面这个写法相对完善一些。备忘下。
类数组对象是一个很好的存储结构,但是功能太弱了,为了享受纯数组的哪些便捷的方法,使用前可以做下转换,通常可以使用$.slice.call()方法做转换,但是旧版本的IE下的HTMLCollection、NodeList不是Object的子类,如果采用[].slice.call()方法可能会导致异常,下面是各大库是怎么处理的: 1、jQuery的makeArray <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <t
场景 场景是大屏页面一张深色背景, 里面一些文本元素以及图表展示. 结果在IE下发现加载异常缓慢, 还有部分人员反馈页面卡死. 后台读写优化 默认处理图片逻辑是, ImageIO读取原图, 转成byt
重写URL是非常有用的一个功能,因为它可以让你提高搜索引擎阅读和索引你的网站的能力;而且在你改变了自己的网站结构后,无需要求用户修改他们的书签,无需其他网站修改它们的友情链接;它还可以提高你的网站的安全性;而且通常会让你的网站更加便于使用和更专业。
刚看到!!的时候也是一脸懵逼,这tm是什么鬼。 !oObject !!oObject 因此!!不是运算符,它只是使用了两次!运算符。 真实案例 真实案例中常见的一个方法就是用来检测IE版本,请看以下代码: let isIE8 = false; isIE8 = !! navigator.userAgent.match(/MSIE 8.0/);//是否为IE8.0 console.log(isIE8); // returns true or false 如果直接打印以下结果,将会输出Araay或null
更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/120055934
1.获取内网和公网真实IP地址(引用地址) 代码太长,见原文链接 2.获得flash版本(在线地址) <!DOCTYPE html> <html> <head> <meta charset="ut
距上篇文章已过去好几天了,说好的一周发表1到3篇文章,难道都让狗吃了吗?现在才发布一篇而且还是转载的文章。 好了,闲话少叙,切入正题,Extjs前端框架是比较早的前端mvc框架了,可能很多人都没接触过,而且现在也很少有项目用Extjs框架搭建了,原因是什么?那就不得而知了,有人说是Extjs比较重…… 在使用Extjs3.3及以下的版本,在IE10环境中却无法点击树节点,而在IE的其他版本(IE7,IE8,IE9,IE11)均可正常。经过在网上查找资料得知,原因是因为Extjs3.3的ext-all.js中的getAttribute方法不能兼容IE10出错引起。 以下是Extjs3.3的ext-all.js的getAttribute方法
我记得我已经遇到过,不过今天又遇到了,而且浪费了大量的时候在上面,甚至怀疑自己写的脚本有问题,花了几乎一个下午来调试这个问题。最后发现是样式导致的…
浏览器渲染页面的方式各不相同,甚至同一浏览器的不同版本(“杰出代表”是 IE)也有差异。因此,浏览器兼容成为前端开发人员的必备技能。如果有一份浏览器 Hack 手册,那查询起来就方便多了。这篇文章就向大家分享 Browserhacks 帮我们从网络上收集的各个浏览器特定的 CSS & JavaScript Hack,记得推荐和分享啊!
今天我来给大家介绍一种js特效,这种特效是当你用鼠标点击组件移动到其他地方后,这个组件就定在了那个地方,这种效果通常用来做视图化排版的。下面我来把代码贴出来给大家看看
JavaScript 是一种易于学习的编程语言,编写运行并执行某些操作的程序很容易。然而,要编写一段干净的JavaScript 代码是很困难的。
如图所示,闭包就是一个定义在函数内部的函数,其作用是将函数内部和函数外部连接起来。大家知道,作用域的问题,就是在函数内部定义的变量称为局部变量,外部取不到值。下面我们通过代码来更加详细地看一下:
nextTick 是 vue中重要的性能优化方式,解析实现原理可以有助于我们更好的理解框架。
相信大家在写vue项目的时候,一定会发现一个神奇的api,Vue.nextTick。为什么说它神奇呢,那是因为在你做某些操作不生效时,将操作写在Vue.nextTick内,就神奇的生效了。那这是什么原因呢?
(关于 Event Loop的细节,我写过一篇很详细的总结试图解释清楚Javascript Event Loop[1]。)
早之前有分享过vue的nextTick的使用,当时说当数据发生变化,更新后执行回调没有实现,那时候也不知道怎么测试的,其实nextTick方法只是做了一步异步。
在我们面试的过程中,经常会遇到问源码的环节,因为优秀的框架通常都会包含很多设计理念跟编程实践。这段时间我一直在看Vue2的源码,发现了很多有意思的实现。虽然现在Vue3都已经发布了,也无法否认Vue2是个优秀的框架这个事实,不影响我们从中学到一些最佳实践。
10、获取小程序链接的地址栏参数 GetWxMiniProgramUrlParam
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>红方块躲避游戏</TIT
1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="utf-8"> 6 <title></title> 7 </head> 8 9 <body> 10 <script type="text/javascript"> 11 function myBrowser() { 12 var userAgent =
代码来自网络~ /*任意位置浮动固定层*/ /*调用: 1 无参数调用:默认浮动在右下角 $("#id").floatdiv(); 2 内置固定位置浮动 //右下角 $("#id").floatdiv("rightbottom"); //左下角 $("#id").floatdiv("leftbottom"); //右下角 $("#id").floatdiv("rightbottom"); //左上角 $("#id").floatdiv("lefttop"); //右上角 $("#id").floatdiv
显然,这是一个bootstrap样式的后台单页应用,用react实现了组件化、用mobx管理状态、引入了fetch等promise异步工具,并且使用了一些日期选择和富文本编辑器插件等第三方库
<template> <svg overflow="hidden" preserveAspectRatio="none slice" :width="width" :height="height"> <image overfl02前端限制上传文件的类型今天在工作中遇到一个需求,需要在上传文件的时候限制上传文件的类型,比如上传图片的就只能上传图片类型的文件。 现将自己在开发中的代码放到我的博客里,以备在以后的开发中再次遇到。就可以直接使用了。09浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabaseCookie 它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于HTTP协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态,保证客户浏览器和服务器通讯时可以知道客户浏览器当前的状态。Cookie就是记录这个状态的容器,Cookie在每次请求的时候都被带回到服务器,从而保证了Server可以知道浏览器当前的状态,由于Cookie会被带回到Server,所以Cookie的内容不能存太多,最多不能超过4K,4K 限制的介绍 http:/09vue的$nextTick的使用+源码分析时隔五个月,我又开始更新公众号博客了。最近自己有点懒散,造成这么长一段时间公众号和博客断更了,在这里对关注我的各位同学们说声抱歉!!02nextTick的原理及运行机制主线程的执行过程就是一个tick,而所有的异步结果都是通过 "任务队列" 来调度。消息队列中存放的是一个个 macro task 结束后,都要清空 所有的 micro task。05JavaScript IE9以下浏览器版本升级提示 <html> <body> <script> var userAgent = navigator.userAgent; var isOpera = userAgent.indexOf("Opera") > -1; var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; if (isIE) { var IE5 = IE55 = I02JS的一些技巧根据当前文字选择返回 TextRange 对象,或根据控件选择返回 ControlRange 对象。03【Angular教程】自定义管道这是我参与8月更文挑战的第10天,活动详情查看:8月更文挑战 一、管道的作用 方便我们在模板中对我们的数据进行格式化处理。 二、内置的常用管道 具体API参照官网查询使用 DatePipe: 格式化日期 UpperCasePipe: 文本转为全部大写 LowerCasePipe: 文本转为全部小写 TitleCasePipe: 文本转为标标题形式(如: hello world=>Hello World) KeyValuePipe: 将对象转为键值对形式 JsonPipe: 转为JSON字符串02前端限制上传文件的类型今天在工作中遇到一个需求,需要在上传文件的时候限制上传文件的类型,比如上传图片的就只能上传图片类型的文件。 现将自己在开发中的代码放到我的博客里,以备在以后的开发中再次遇到。就可以直接使用了。 这里就放一个小demo了。代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="file" name="contractFil06
今天在工作中遇到一个需求,需要在上传文件的时候限制上传文件的类型,比如上传图片的就只能上传图片类型的文件。 现将自己在开发中的代码放到我的博客里,以备在以后的开发中再次遇到。就可以直接使用了。
Cookie 它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于HTTP协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态,保证客户浏览器和服务器通讯时可以知道客户浏览器当前的状态。Cookie就是记录这个状态的容器,Cookie在每次请求的时候都被带回到服务器,从而保证了Server可以知道浏览器当前的状态,由于Cookie会被带回到Server,所以Cookie的内容不能存太多,最多不能超过4K,4K 限制的介绍 http:/
时隔五个月,我又开始更新公众号博客了。最近自己有点懒散,造成这么长一段时间公众号和博客断更了,在这里对关注我的各位同学们说声抱歉!!
主线程的执行过程就是一个tick,而所有的异步结果都是通过 "任务队列" 来调度。消息队列中存放的是一个个 macro task 结束后,都要清空 所有的 micro task。
<html> <body> <script> var userAgent = navigator.userAgent; var isOpera = userAgent.indexOf("Opera") > -1; var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera; if (isIE) { var IE5 = IE55 = I
根据当前文字选择返回 TextRange 对象,或根据控件选择返回 ControlRange 对象。
这是我参与8月更文挑战的第10天,活动详情查看:8月更文挑战 一、管道的作用 方便我们在模板中对我们的数据进行格式化处理。 二、内置的常用管道 具体API参照官网查询使用 DatePipe: 格式化日期 UpperCasePipe: 文本转为全部大写 LowerCasePipe: 文本转为全部小写 TitleCasePipe: 文本转为标标题形式(如: hello world=>Hello World) KeyValuePipe: 将对象转为键值对形式 JsonPipe: 转为JSON字符串
今天在工作中遇到一个需求,需要在上传文件的时候限制上传文件的类型,比如上传图片的就只能上传图片类型的文件。 现将自己在开发中的代码放到我的博客里,以备在以后的开发中再次遇到。就可以直接使用了。 这里就放一个小demo了。代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="file" name="contractFil
领取专属 10元无门槛券
手把手带您无忧上云