项目知识点汇总
来源:互联网 发布:linux 卡在进度条 编辑:程序博客网 时间:2024/06/08 13:50
在做项目的时候,回遇到很多很小的地方,但是解决起来可能会花点很长时间,有的甚至超过了实现一个功能的时间,也许不解决可能用,但是bug就在那里,不解决,不死心。
1、解决火狐缓存xml问题
在后台配置页中,需要读取服务器端的xml文件来实现配置,所以每当移动或修改xml时,需要加载服务器端的xml,这里在火狐、谷歌等浏览器有一个问题,就是每当修改完xml后重新加载的时候,因为此时读取的是xml的缓存文件,所以无法获得最新的xml数据,手动清理缓存之后,变可以重新实现移动和修改。听起来这是个很简单的问题,就这么一个小问题几乎用了三天时间,其中有两天是和小崔一起弄的。
首先,在加载网页加上时间戳是行不通的,不知道为什么。
其次,使用网上给出的清理缓存的方式是行不通的,不知道为什么。
再次,强制刷新网页(ctrl+F5)在火狐中是行不通的,因为它中弹出提示框。
最后,解决办法是,在加载xml的地方,在xml文件名后加上时间戳,其实之前从来都没有在需要加载的文件后加过时间戳,感觉这个问题纯属经验问题,如果不懂,可能会绕很多弯路,但是如果知道,甚至连半分钟都不到,轻松解决了。
2、各种浏览器的兼容问题
我们知道,不同的浏览器对js的解析有些地方时不一样的,不如在火狐中就没有innerText,在IE8中没有textContent,所以,如果兼容不同的浏览器,需要对浏览器进行判断,这个问题比较好解决,找到不同的地方,然后进行判断即可,下面举个例子。
if (navigator.userAgent.indexOf("MSIE") > 0) {
//循环当前list,如果与当前点击的li内容相同,则执行点击当前li,把信息写入到弹出框中
for (var i = 0; i < popDivClick.length; i++) {
if (popDivClick[i].innerText == elaClass) {
popDivClick[i].click();
}
}
}
//如果为火狐
else if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {
//循环当前list,如果与当前点击的li内容相同,则执行点击当前li,把信息写入到弹出框中
for (var i = 0; i < popDivClick.length; i++) {
if (popDivClick[i].textContent == elaClass) {
popDivClick[i].click();
}
}
}
else if (navigator.userAgent.indexOf("Chrome") >= 0) {
//循环当前list,如果与当前点击的li内容相同,则执行点击当前li,把信息写入到弹出框中
for (var i = 0; i < popDivClick.length; i++) {
if (popDivClick[i].innerText == elaClass) {
popDivClick[i].click();
}
}
}
else if (navigator.userAgent.indexOf("Opera") >=0) {
//循环当前list,如果与当前点击的li内容相同,则执行点击当前li,把信息写入到弹出框中
for (var i = 0; i < popDivClick.length; i++) {
if (popDivClick[i].innerText == elaClass) {
popDivClick[i].click();
}
}
}
3、给下拉框赋值,在修改的时候,做的是弹出框,有个地方是需要下拉框的,但是下拉框的初始值应该是修改前的值,所以这里就需要给下拉框赋值,这里比起给textbox赋值来说,更复杂一些。
//给下拉框赋值
var drop = document.getElementById('dropModify');
var checks = drop.getElementsByTagName("option");
for (var i = 0; i < checks.length; i++) {
if (checks[i].value == ip) {
drop.selectedIndex = i;
}
}
解决单选框和下拉框的思路是一样的,也是用于修改时初始化选项
//得到所有radio
var vRbtidList = vRbtid.getElementsByTagName("INPUT");
//循环tree节点
for (var i = 0; i < childNodes.length; i++) {
//获取当前选中节点
if (childNodes[i].attributes[0].nodeTypedValue == el.options[el.selectedIndex].text) {
//当节点为content是选中否,否则选中是
if (childNodes[i].attributes[2].nodeTypedValue == "content") {
vRbtidList[1].checked = true;
return;
}
else {
vRbtidList[0].checked = true;
return;
}
}
4、使鼠标放上去label显示完整内容
有时候数据很长,比如在表格中,我们如果显示完整数据的话,表格会变得很丑,所以这里需要把显示部分数据,然后鼠标放上去的时候弹出一个小的弹出框显示完整数据。
首先,只显示部分数据的方法
<style type="text/css">
.mlength
{
display: block;
width: 50px;
overflow: hidden;
white-space: nowrap;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
}
</style>
显示弹出框
<asp:Label ID="lblId" runat="server" ToolTip='<%# Eval("cardId") %>' Text='<%# Eval("cardId").ToString()=="0"?Eval("cardId").ToString():Eval("cardId").ToString().Substring(26,6) %>'></asp:Label></td>
这里还有一个知识点,就是因为绑定的卡号一般为32未,在label中要显示后六位,但是在系统初始中,初始现金支付使用的是卡号0,只有一位,如果直接绑定会报错,这里这里需要判断该卡号是否未0,未0的话就不截取字符串,不为零的话截取,这里用的是三木运算符。
5、数据库中的日期时间只显示日期(绑定表格时使用)
<asp:Label ID="Label1" runat="server" Text='<%# Eval("birthday","{0:yyyy-MM-dd}")%>'></asp:Label>
其实可以发现,这些问题不解决不会影响到运行,比如,限制客户只能用IE,或者是界面丑一点也没有太大关系,不影响功能,但是,当解决之后就会发现,其实它不仅仅是解决一个功能,这些问题,解决了,以后就永远都解决了,不解决,就永远都是个问题。
- 项目知识点汇总
- 项目开发知识点汇总
- 信息系统项目管理- 知识点汇总
- 小型商城项目知识点汇总
- XX项目知识点汇总(1)
- XX项目知识点汇总(2)
- XX项目知识点汇总(3)
- XX项目知识点汇总(4)
- Flash项目知识点汇总(AS2部分)
- IOS知识点汇总与项目搜集
- PMP笔记-项目范围管理知识点汇总
- 知识点汇总
- 知识点汇总
- 知识点汇总
- 知识点汇总,知识点聚合汇总
- <独家>DunkingBall的项目代码块知识点细节汇总(杂)
- 项目知识点
- 项目知识点
- [IT生活] 失而复得 - 钱包丢失惊魂记
- 多线程基础
- Windows核心编程学习笔记-------23章
- Mageia 3 Beta 1 发布,Mandriva 发行版
- zoj 2684 ChonSu
- 项目知识点汇总
- 关于让人崩溃的Linux和Qt
- spring的ContextLoaderListener
- iOS学习笔记(二)——Hello iOS
- HDU 1385 Minimum Transport Cost(多源最短路径+路径记录)
- 求助???????????
- 设计模式推演——整合已有系统接口(Facade/Adapter)
- linux tcpdump命令以及结果分析
- 某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间