最近做项目遇到的棘手问题
2017-05-15 17:31
337 查看
问题1:在IE高版本浏览器上,测试搜索时调用ajax请求去搜索内容,但却没有显示数据,谷歌下能出来数据?
解决办法:首先先对比他的请求头,响应头的区别,发现没有问题,可以考虑url地址的问题。最后发现是url中出现中文,zaiIE浏览器下不会解析中文,所以把url中的中文
转成utf-8编码格式。
例子:encodeURI(searchNameOrBed) ===》把搜索的字段转编码
说明:1 .encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.
2. UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号.
问题2:在IE浏览器测试发现,通过ajax请求(get方式)过来的数据没有更新?
原因:这是IE的一个bug,IE下的ajax请求是按照ip地址和请求路由进行缓存
解决办法:1.直接在请求的时候在请求链接的末尾自动添加个时间戳或者随机数就OK了
像上面的话: /Home/GetMusic?id=new Date()/Math.random()
2.最好的方法: $.ajax({cache:false})
加上cache属性,这样页面中所有的ajax请求时,都执行这个。
问题3:读社保卡时遇到的一系列问题,首先只能在IE内核下才能读,并且在高版本IE中会出现崩溃程序,所以选择了在360浏览器下的IE兼容模式下测试。(,ActiveX只能在IE浏览器运行,也就是<object…>这段代码在firefox等其他浏览器是不能正常工作的)
最开始用了.exe安装了控件,然后使用object标签来引用,但是用服务器打开的地址就不支持这个控件,找不到这个变量下的方法,所以用了js自己创建一个控件,通过他的progId。
(1)用<Object>标签调用ActiveX
通过.exe程序安装,插件注册成功后,可在注册表中搜索这个clsid找到这个
(2)如果使用第一种办法不行,可以通过javascript的new ActiveXObject来调用ActiveX
如果不知道控件的progId,可以通过clasid在注册表查找,然后就能找到progId(Uprain.CardAccessorCtrl.1)
例子:
上述完成之后,在实际测试过程中还可能遇到两种情况:
1) 出现“Automation 服务器不能创建对象”异常的并不一定就表示插件没安装,也有可能是因插件未实现初始化或脚本安全接口,从而被IE拦截,需要调整IE“工具-选项-安全-自定义级别”中“ActiveX控件和插件”部分的设置;
2) 有时候,同样已注册的插件,通过object标签引用的方式能正常调用接口,但通过new ActiveXObject的方式则调用插件接口失败。
3)在服务器环境下,一定输入IP解析,输入localhost的话可能也会出现“Automation 服务器不能创建对象”
问题4:IE浏览器的时间格式转时间戳兼容问题,也是通过在谷歌和IE反复测试才出来的?
解决办法:(1)如果时间格式为年-月-日,不需要转成年/月/日格式,new Date(str)是识别的。
var str = '2013-08-30 10:30'; // 日期字符串
str = str.replace(/-/g,'/'); // 将-替换成/,因为下面这个构造函数只支持/分隔的日期字符串
(2)如果时间格式为年-月-日 时:分:秒,需要转成年/月/日 时:分:秒格式,如果秒数没给出,则默认为0。
例子:new Date(str)构造了一个日期,参数str至少要提供年月日三部分,也就是形如“2013/03/08”的字符串,不能是"2013/03",否则将得到一个NaN。
此时构造出来的时间是:2013/03/08 00:00:00。同时你还可以传入小时、分钟和秒数,但不能只传入小时,比如“2013/03/08 17”,这样的参数同样会得到一个NaN。
参数可以是“2013/03/08 17:20”或者“2013/03/08 17:20:05”,这样都可以得到正确的时间,其中如果秒数没给出,则默认为0
问题5:在做项目中遇到了一个时间格式的问题,前端显示的时月-日 时:分格式的,要怎么实现,但传给后台要的是时间戳?
解决办法:(1)先把后台请求的时间戳转成年月日时分格式,用另一个变量来存取
(2)把用于展示的变量,在选取时间时,来转成月日时分格式
(3)把后台原传来的数据在转成时间戳返给后台
时间控件插件jeDate,使用方法:
html部分:
<td>
<input type="text" id="getBeginTime" v-model="registerItem.beginTime" style="display:none;" />
<input type="text" readonly="readonly" @click="getBeginTime(registerItem)" id="getBeginTimex" v-model="subBeginTime" />
</td>
解决办法:首先先对比他的请求头,响应头的区别,发现没有问题,可以考虑url地址的问题。最后发现是url中出现中文,zaiIE浏览器下不会解析中文,所以把url中的中文
转成utf-8编码格式。
例子:encodeURI(searchNameOrBed) ===》把搜索的字段转编码
说明:1 .encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.
2. UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号.
问题2:在IE浏览器测试发现,通过ajax请求(get方式)过来的数据没有更新?
原因:这是IE的一个bug,IE下的ajax请求是按照ip地址和请求路由进行缓存
解决办法:1.直接在请求的时候在请求链接的末尾自动添加个时间戳或者随机数就OK了
像上面的话: /Home/GetMusic?id=new Date()/Math.random()
2.最好的方法: $.ajax({cache:false})
加上cache属性,这样页面中所有的ajax请求时,都执行这个。
问题3:读社保卡时遇到的一系列问题,首先只能在IE内核下才能读,并且在高版本IE中会出现崩溃程序,所以选择了在360浏览器下的IE兼容模式下测试。(,ActiveX只能在IE浏览器运行,也就是<object…>这段代码在firefox等其他浏览器是不能正常工作的)
最开始用了.exe安装了控件,然后使用object标签来引用,但是用服务器打开的地址就不支持这个控件,找不到这个变量下的方法,所以用了js自己创建一个控件,通过他的progId。
(1)用<Object>标签调用ActiveX
<object id="CardAccessor" classid="clsid:03AD53E8-D7E7-485D-A39A-D07B37DEFBC9" width="0" height="0"> </object>
通过.exe程序安装,插件注册成功后,可在注册表中搜索这个clsid找到这个
(2)如果使用第一种办法不行,可以通过javascript的new ActiveXObject来调用ActiveX
如果不知道控件的progId,可以通过clasid在注册表查找,然后就能找到progId(Uprain.CardAccessorCtrl.1)
例子:
var objCard = new ActiveXObject("Uprain.CardAccessorCtrl.1");
上述完成之后,在实际测试过程中还可能遇到两种情况:
1) 出现“Automation 服务器不能创建对象”异常的并不一定就表示插件没安装,也有可能是因插件未实现初始化或脚本安全接口,从而被IE拦截,需要调整IE“工具-选项-安全-自定义级别”中“ActiveX控件和插件”部分的设置;
2) 有时候,同样已注册的插件,通过object标签引用的方式能正常调用接口,但通过new ActiveXObject的方式则调用插件接口失败。
3)在服务器环境下,一定输入IP解析,输入localhost的话可能也会出现“Automation 服务器不能创建对象”
问题4:IE浏览器的时间格式转时间戳兼容问题,也是通过在谷歌和IE反复测试才出来的?
解决办法:(1)如果时间格式为年-月-日,不需要转成年/月/日格式,new Date(str)是识别的。
var str = '2013-08-30 10:30'; // 日期字符串
str = str.replace(/-/g,'/'); // 将-替换成/,因为下面这个构造函数只支持/分隔的日期字符串
(2)如果时间格式为年-月-日 时:分:秒,需要转成年/月/日 时:分:秒格式,如果秒数没给出,则默认为0。
例子:new Date(str)构造了一个日期,参数str至少要提供年月日三部分,也就是形如“2013/03/08”的字符串,不能是"2013/03",否则将得到一个NaN。
此时构造出来的时间是:2013/03/08 00:00:00。同时你还可以传入小时、分钟和秒数,但不能只传入小时,比如“2013/03/08 17”,这样的参数同样会得到一个NaN。
参数可以是“2013/03/08 17:20”或者“2013/03/08 17:20:05”,这样都可以得到正确的时间,其中如果秒数没给出,则默认为0
问题5:在做项目中遇到了一个时间格式的问题,前端显示的时月-日 时:分格式的,要怎么实现,但传给后台要的是时间戳?
解决办法:(1)先把后台请求的时间戳转成年月日时分格式,用另一个变量来存取
(2)把用于展示的变量,在选取时间时,来转成月日时分格式
(3)把后台原传来的数据在转成时间戳返给后台
时间控件插件jeDate,使用方法:
jeDate({ dateCell: "#getBeginTime", format: "YYYY-MM-DD hh:mm", isinitVal: false, isTime: true, isClear: true, minDate: "1900-01-01 00:00:00", maxDate: "2099-12-31 23:59:59", zIndex: 100000, //选中日期回调 choosefun: function(base) { //用户后台提交 registerItem.beginTime = base; //用于页面展示(把年月日时分转成月日时分) _this.subBeginTime = _this.timeTransfer(base); }, //点击确定 okfun: function(base) { //用户后台提交 registerItem.beginTime = base; //用于页面展(把年月日时分转成月日时分) _this.subBeginTime = _this.timeTransfer(base); }, //点击清空 clearfun: function() { //用户后台提交 registerItem.beginTime = null; //用于页面展示 _this.subBeginTime = null; } });
html部分:
<td>
<input type="text" id="getBeginTime" v-model="registerItem.beginTime" style="display:none;" />
<input type="text" readonly="readonly" @click="getBeginTime(registerItem)" id="getBeginTimex" v-model="subBeginTime" />
</td>
相关文章推荐
- 总结最近项目开发中遇到的问题,希望对大家有所帮助!
- 最近项目中遇到的一些设计问题
- 最近在项目中遇到的几个小小问题
- Xcode 8最近朋友的项目遇到了关于上架的问题以及xcode8所需要的环境的配置以及ios 10所支持的功能
- 最近实际项目中遇到的技术问题与解决思路
- 最近在项目中实践了一下Redis,过程中遇到并解决了若干问题,记录之.
- 最近因为项目需要,需要接入友盟的推送,遇到很多问题,记录一下
- [Java] 最近导入外部项目遇到的一些问题的解决办法的分享
- 最近项目遇到的问题
- 好久不做开发了,最近使用vs2008遇到了不能添加多个项目的问题,在此标记一下
- 谈最近项目上线遇到的数据问题
- 最近项目开发中遇到的各种小问题和技巧
- Linux环境下段错误的产生原因及调试方法小结 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且项目工程庞大复杂,出现了不少问题,其中遇到最多、花费时间最长的问题就是
- 最近做项目遇到的一些问题总结
- 最近做网页前端项目时遇到的一些问题以及解决方案
- 最近一阵子写C#的项目,遇到的一些问题以及解决的办法,跟大家分享一下```
- 最近项目上遇到了个问题,一直未能解决
- 最近要做个项目,遇到一些关于ansys问题,看看兄弟们能否帮我解决?
- 最近做项目遇到的一些小问题
- 最近遇到一个非常棘手的需求是关于邮件转发的问题,请大家来帮忙给出出主意如何实现。