-
网站适配IE浏览器的几个注意事项
2020-06-16 16:25:50网站适配IE浏览器的几个注意事项 注意事项目录网站适配IE浏览器的几个注意事项1、ajax请求date数据格式:2、部分js插件需要引入对应的js文件才能生效2、判断不同浏览器内核后使用对应的方法2、IE浏览器常见报错1)、...网站适配IE浏览器的几个注意事项
注意事项目录
1、ajax请求date数据格式:
错误示范
$.ajax({ url: 'url', type: 'POST', data: { data: "data", }, success: function (e) { } })
正确示范(最后一个date值不能有“,”)
$.ajax({ url: 'url', type: 'POST', data: { data: "data" }, success: function (e) { } })
2、部分js插件需要引入对应的js文件才能生效
例如:sweetalert弹框插件,在IE浏览器正常运行,需要引入promise.auto.js,在chorme浏览器则不需要
IE正常使用该插件有两种方法:
1、cdn地址:https://cdn.bootcss.com/es6-promise/4.1.1/es6-promise.auto.js
2、以下代码不会与IE11一起运行:swal({ title: 'Are you sure?', text: "You won't be able to revert this!", type: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'Yes, delete it!' }).then((result) => { if (result.value) { swal( 'Deleted!', 'Your file has been deleted.', 'success' ) } })
解决此问题的简单方法是使用 function() 语法而不是 () =>
swal({ title: 'Are you sure?', text: "You won't be able to revert this!", type: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'Yes, delete it!' }).then(function(result) { if (result.value) { swal( 'Deleted!', 'Your file has been deleted.', 'success' ) } })
2、判断不同浏览器内核后使用对应的方法
var ie = navigator.userAgent.match(/MSIE\s([\d.]+)/), ie11 = navigator.userAgent.match(/Trident\/7.0/) && navigator.userAgent.match(/rv:11/), ieEDGE = navigator.userAgent.match(/Edge/g), ieVer = (ie ? ie[1] : (ie11 ? 11 : (ieEDGE ? 12 : -1))); console.log('excelFileie:' + ie); console.log('excelFileieVer:' + ieVer); if (ie && ieVer < 10) { this.message.error('No blobs on IE<10'); return; } if (ieVer > -1) { //IE } else { //chorme }
2、IE浏览器常见报错
1)、无效字符:
原本是:
`string text ${expression} string text`
修改为
"string text "+expression+" string text"
2)、js导出excel文件,传递给系统调用的数据区域太小:
IE浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。
function downloadFile(title, data) { const blob = new Blob([data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;'}); const ie = navigator.userAgent.match(/MSIE\s([\d.]+)/), ie11 = navigator.userAgent.match(/Trident\/7.0/) && navigator.userAgent.match(/rv:11/), ieEDGE = navigator.userAgent.match(/Edge/g), ieVer = (ie ? ie[1] : (ie11 ? 11 : (ieEDGE ? 12 : -1))); console.log('ie:' + ie); console.log('ieVer:' + ieVer); if (ie && ieVer < 10) { this.message.error('No blobs on IE<10'); return; } if (ieVer > -1) { window.navigator.msSaveBlob(blob, title); } else { const url = window.URL.createObjectURL(blob); let link = document.createElement('a'); link.setAttribute('href', url); link.setAttribute('download', title); document.body.appendChild(link); link.click(); document.body.removeChild(link); } }
3)、InvalidCharacterError
//创建HTML元素的js代码, 例如ajaxfileupload.js, 行10 字符17代码: var io = document.createElement("<iframe id='" + frameId + "' name='" + frameId + "' />"); //以上代码在IE10下报如下错误: //SCRIPT5022: InvalidCharacterError //解决办法,改成如下兼容写法: var io=document.createElement("iframe"); io.id=frameId; io.name=frameId; //以上代码出至 ajaxfileupload.js, 行10 字符17 使用ajaxfileupload.js需把此行更改成上面那样,才能在IE10正常运行。
-
C++中strcpy()函数和strcpy_s()函数的使用及注意事项
2018-09-04 12:55:18在编写C++程序时,不可避免会遇到strcpy()函数和...所以这里来简略说一下strcpy()函数和strcpy_s()函数的使用及注意事项。 首先,我们知道原函数strcpy()函数和安全版本strcpy_s()函数都是存在于头文件<cstr...在编写C++程序时,不可避免会遇到strcpy()函数和其安全版本strcpy_s()函数,其实之所以会推出_s版本的函数,就是为了使编程更加安全,然而为了保证安全,也就会更容易使我们编写的代码“被报错”。所以这里来简略说一下strcpy()函数和strcpy_s()函数的使用及注意事项。
首先,我们知道原函数strcpy()函数和安全版本strcpy_s()函数都是存在于头文件<cstring>中的,所以程序一开始必须要有以下语句:
#include <cstring>
其次,原函数strcpy()函数是存在于标准名称空间std中的成员,所以要使用strcpy()函数,还需要加上以下语句:
using namespace std;
或者:
using std::strcpy;
或者在每次使用strcpy()函数时,前面加上名称空间:
std::strcpy(str1, str2);
但是对于最新的编辑器,往往你正常使用strcpy()函数,还是会报错,例如下面这个简单的例子:
// strcpy.cpp -- test the strcpy function and strcpy_s function #include "stdafx.h" #include <iostream> #include <cstring> int main() { char str1[20]; char str2[20]; std::cout << "Please enter str2: "; std::cin.get(str2, 20); std::strcpy(str1, str2); std::cout << "str1 is " << "\" " << str1 << "\".\n"; system("pause"); return 0; }
正常来说,语法上没有任何问题,但是运行时,Visual Studio 2017 会报错,显示如下:
意义很简单,就是告诉你,strcpy()函数不安全,必须改为使用strcpy_s()函数,首先不管改成strcpy_s()函数之后会发生什么后续问题,其实从理论上来说,上面的代码语法上和逻辑上来说都是对的,那么怎么避免编辑器强制要求你使用安全版本呢?
其实解决方法有很多,单单是避免上图中的错误代码4996的情况,可以使用编辑器的选择性提供warning功能,在include语句前面加上下句:
#pragma warning( disable : 4996)
但是这种解决方法有时候不能解决问题,例如VS2017我就试过好像不行,那么我们就索性关闭warning功能就好了,完成这个任务的方法是在#include<stdio.h>的前面加上一句,如下所示:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>
VS2017里面,这句应该是加在头文件“stdafx.h”里面。
加完之后,再次运行相同的程序,就可以正常运行了,显示结果如下图所示:
那么解决了不使用安全版本的问题,接下来就来说一下使用安全版本的情况。
如果我们选择相信编辑器,那么我们就会把strcpy()函数改成使用strcpy_s()函数,改完之后运行首先会遇到以下错误:
这是因为之前使用strcpy()函数时,我们知道该函数是标准名称空间std的成员,而安全版本strcpy_s并不是该名称空间的成员,所以“std::”应该被去掉,去掉之后再次运行,就会正常运行了。
但是有时候,编辑器在你去掉“std::”还是会出现错误,错误说明是:1.没有与参数列表匹配的 重载函数"strcpy_s"实例;2."strcpy_s":函数不接受2个参数。
如下图所示:
这是因为strcpy_s()函数是有两个版本,用两个参数、三个参数都可以,只要可以保证缓冲区大小。
三个参数时:
errno_t strcpy_s(
char *strDestination,
size_t numberOfElements,
const char *strSource
);
两个参数时:
errno_t strcpy_s(
char (&strDestination)[size],
const char *strSource
); // C++ only所以,若我们使用new来分配储存空间时,就会出现上面说的不能保证缓冲区大小的问题了。
看下面的代码:
char * str; str = new char[4]; strcpy_s(str, "C++");
语法来说没有什么问题,但是因为str的储存空间是使用new临时分配的,所以并不能保证缓冲区大小,点击运行就会出现上述的两种错误了。
这种情况的解决方法其实很简单,那就是不符合2个参数的版本就使用3个参数的版本呗。在两个str之间,加上一个参数,标识长度。
所以完整代码如下:
// strcpy.cpp -- test the strcpy function and strcpy_s function #include "stdafx.h" #include <iostream> #include <cstring> int main() { char str1[20]; char str2[20]; std::cout << "Please enter str2: "; std::cin.get(str2, 20); strcpy_s(str1, str2); std::cout << "str1 is " << "\"" << str1 << "\".\n"; char * str; str = new char[20]; strcpy_s(str, strlen(str1)+1, str1); std::cout << "str is " << "\"" << str << "\".\n"; system("pause"); return 0; }
这里分别使用了2个参数和3个参数的strcpy_s()函数版本。
后面使用3个参数的版本时,一般的做法就是将长度定为被复制的字符串长度+1,因为strlen()返回字符串长度,但是不包括字符串末尾的空字符,所以+1。
上述代码运行结果如下图所示:
以上就是strcpy()函数和strcpy_s()函数的基本使用和注意事项了,希望对大家有所帮助~
-
C#使用Winfrom编程时的注意事项
2018-10-06 10:20:20C#使用Winfrom编程时的注意事项 C#让窗体不能被修改大小 FormBorderStyle = FormBorderStyle.FixedSingle; 让窗体在屏幕中心显示: this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; ...C#使用Winfrom编程时的注意事项
C#让窗体不能被修改大小
FormBorderStyle = FormBorderStyle.FixedSingle;
让窗体在屏幕中心显示:
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
关闭最大化功能:
this.MaximizeBox = false;
关闭最小化功能:
this.MinimizeBox = false;
让组件可以被多线程修改:
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
发送httpd请求:
·HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri(@"url地址")); req.Method = "协议"; req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0"; req.ContentType = "application/x-www-form-urlencoded"; req.Accept = "application/json"; req.Referer = "http://www.kdjz.com/"; string result = ""; StringBuilder builder = new StringBuilder(); builder.AppendFormat("{0}={1}", "phone", textBox1.Text); builder.Append("&"); builder.AppendFormat("{0}={1}", "password", textBox2.Text); byte[] data = Encoding.UTF8.GetBytes(builder.ToString()); req.ContentLength = data.Length; using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); reqStream.Close(); } HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); Stream stream = resp.GetResponseStream(); //获取响应内容 using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { result = reader.ReadToEnd(); }
开启多线程执行函数:
Thread thread1 = new Thread(new ThreadStart(StartSomeWorkFromUIThread)); Thread thread2 = new Thread(new ThreadStart(GetMessage)); thread1.IsBackground = true; thread1.Start();
定义动态string数组:
private List<string> Have_Gotton_User_Name = new List<string>();
-
CSDN博客注意事项
2020-02-09 10:43:16 -
算法比赛注意事项
2019-03-14 20:29:34算法比赛注意事项 -
递归注意事项
2018-03-19 21:09:56A:递归概念和注意事项 * a: 递归概念 * 递归,指在当前方法内调用自己的这种现象 * 递归分为两种,直接递归和间接递归 * 直接递归称为方法自身调用自己。间接递归可以A方法调用B方法,B方法调用C方法,C方法... -
跨平台移动APP开发进阶(一)mui开发注意事项
2015-07-12 08:18:31mui开发注意事项 Mui HTML5开发框架 mui是一个高性能的HTML5开发框架,从UI到效率,都在极力追求原生体验;这个框架自身有一些规则,刚接触的同学不很熟悉,特总结本文;想了解mui更详细的信息,请访问mui官网。 DOM... -
Shell数组添加元素注意事项
2019-02-12 20:16:24数组添加元素注意事项总结 -
makeblastdb注意事项
2017-01-17 11:23:53makeblastdb注意事项本地blast,需要自行构建数据库。那么就要用到makeblastdb。这个命令很简单。USAGE makeblastdb [-h] [-help] [-in input_file] [-input_type type] -dbtype molecule_type [-title database_... -
IDEA rename 注意事项
2019-01-17 10:21:36IDEA rename注意事项 假设我要修改user文件夹的名字为userInfo 但是我已修改,可能会有很多的文件无缘无故的被修改了 所以这个时候,你应该点击preview 右键,remove你不想被影响或者被修改的文件 然后再 点击 Do ... -
SetBitmap注意事项
2016-10-27 11:37:41SetBitmap的注意事项:动态加载位图hBmpx = (HBITMAP)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_TREADY), IMAGE_BITMAP,0,0, LR_LOADMAP3DCOLORS); hold = ((CStatic *)GetDlgItem(IDC -
JAVA 代码连接 MySQL 注意事项
2019-08-11 15:40:51java代码连接 MySQL 注意事项 -
pyinstaller打包注意事项
2020-01-13 08:52:56pygame打包注意事项 pyinstaller打包游戏的方法: 1.在命令窗口安装pyinstaller ->pip install pyinstaller 2.查看安装的版本信息 pyinstaller -v 3.进入需要打包的文件的路径下 ->pyinstaller -F -w main.py ... -
OPC取数OPCAutomation.dll的使用以及注意事项
2016-11-22 15:00:36OPC取数OPCAutomation.dll的使用以及注意事项,项目使用的是Winform+C#,从美卓maxDNA OPCServer取数,接口机系统是Win7,工控机是Win Server2003, -
Masonry使用注意事项,原生约束使用注意事项
2015-12-03 10:53:21Masonry注意事项: 解决吴用masonry的bug; 1 如果只设置宽度,或者高度,使用以下语句: make.height.mas_equalTo(20); 不可使用:make.size.height.mas_equalTo(20); 否则xcode报错(Will attempt to recover... -
netty ChannelInboundHandlerAdapter 使用注意事项
2017-07-12 09:13:15ChannelInboundHandlerAdapter 使用注意事项 -
c语言gets注意事项
2019-03-12 21:13:23关于getline()与gets()的注意事项 此两个函数都是用来读取一行字符串的,遇到换行符认为读行结束并把换行符从缓冲区读取然后丢掉 对于scanf(),如果读取%c,那么空格和换行符都会读取,如果是其他的数据类型,例如为... -
Unity3D开发注意事项
2016-10-18 15:46:06Unity开发注意事项,涉及资源/NGUI/C#/Lua等方面细节。 -
TS注意事项
2010-11-04 21:42:05TS注意事项 -
AD19画原理图和PCB注意事项和步骤(主要为PCB和总结注意事项)
2020-05-14 11:12:44AD原理图绘制注意事项 PCB不同的板层 一开始接触PCB就被PCB那么多的板层给吓到了,但是看了许多视频之后发现,只用到了2-3个板层,方便起见,还是把各个板层的解释说明放在下方 PCB板绘制步骤 规则设置 ... -
服务器维护注意事项
2018-11-23 21:48:45服务器维护注意事项 远程服务器不能关机只能重启 重启时应该关闭服务 不要在服务器访问高峰运行或者高负载运行 远程配置防火墙时不要把自己提出服务器 指定合理的密码规范并定期更新 合理分配权限 定期备份... -
CH340电路设计注意事项
2017-04-13 17:33:57在前面两篇博客提到了CH340的电路设计以及芯片选型,本文将重点放在使用CH340芯片进行电路设计的一些细节与注意事项。 电压匹配问题 CH340 芯片通过 USB 转换出来的 TTL 串口输出和输入电压是根据芯片供电电压是... -
蓝桥杯(Java)注意事项
2018-02-25 09:17:42蓝桥杯Java注意事项 常用技巧 输入输出 字符串操作 Java数组基本操作 数据格式化 eclipse快捷键 编程技巧 蓝桥杯Java注意事项 类名称必须采用public class Main方式命名 整数之间的运算为整数。 int的取值... -
paypal支付注意事项
2018-07-06 17:33:07公司做出口业务自营网站需要使用paypal支付,最开始一脸懵逼从没有接触过paypal,后来看官网和其它博客加上自己慢慢摸索,实战得出以下注意事项。1.Q:我的账号的appId和secret在哪里获取?A:首先要接paypal得有个... -
使用SVN注意事项
2015-12-15 13:57:46iOS 开发中svn的使用以及注意事项 -
ansys安装注意事项
2019-03-13 22:15:00在安装ansys中经常出现问题,折腾完以后总结了几条注意事项。 系统盘“用户”文件夹文件名要为英文,即为“users”。 如果该文件夹不是英文,更改方法如下: 查看-显示/隐藏-勾选隐藏的项目。 如未出现“desktop.... -
2019年美赛注意事项
2019-01-24 11:13:25一.流程 1.注意队友信息 2.检查指导老师信息、及自己所在的地址 ...邮件提交及文件注意事项 1.要注意邮件的主题 2.文件的格式 3.所要提交文件的命名 4.提交的文件为pdf格式 5.注意提交的时间... -
MFC使用sleep函数注意事项
2019-03-14 10:44:14MFC使用sleep函数注意事项 -
TVS参数、选型、使用注意事项
2019-11-05 13:32:24本博客主要讲述TVS的参数和使用注意事项。 -
写iOS SDK注意事项
2016-07-15 21:04:30写iOS SDK注意事项 发表于 2015-01-31 21:44 文章目录 1. 注意事项一:所有类名都应该加前缀2. 注意事项二:所有 category 方法加前缀3. 注意事项三:不要将第三方库打包进 SDK4. 注意事项四:做基本的...
-
Introducing the Facebook Field Guide to Machine Learning video series
-
假如你想成为一名测试工程师(程序员找茬师)
-
餐厅采购统计查询系统V5.0.zip
-
Mycat 实现 MySQL的分库分表、读写分离、主从切换
-
MySQL 高可用工具 DRBD 实战部署详解
-
批处理文件语法
-
家用射频美容仪电路图和PCB
-
Grokking+System+Design.pdf
-
Sourcetree Mac版
-
文件上传和下载jar包.rar
-
Windows系统管理
-
尚硅谷_授课须知.pdf
-
龙芯生态应用开发基础:C语言精要
-
simatic_s7_plcsim_v13_sp2.exe
-
使用 Linux 平台充当 Router 路由器
-
串口功能,添加了多发扩展区。
-
实现 MySQL 读写分离的利器 mysql-proxy
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
JMETER 性能测试基础课程
-
漏洞利用