网页页面NULL值对浏览器兼容性的影响
网页页面NULL值对浏览器兼容性的影响
近期做项目中一个页面中的input radio出现浏览器兼容性问题。
主要问题:
在谷歌浏览器,360急速模式和搜狗急速模式中给radio初始动态赋值时。checked属性失效,无法选中。注:360急速模式和搜狗急速模式使用了谷歌chorme的内核(又称webkit内核)。
在火狐浏览器中给radio初始动态赋值时,checked属性正常选中。
本来同事以为是浏览器兼容问题,始终未能解决这个问题。后来这个Bug交由我来改动。
初始接到任务时,也怀疑是浏览器兼容问题,但后来细致一想。谷歌这么牛皮的技术实力,出问题的几率应该比較小,遂从代码本身查找问题。后来发现原来是有一个EL表达式的值附了NULL值,影响了radio的选中,才出现了浏览器不兼容的Bug。
总结经验教训。对NULL值的推断。十分必要,特别是页面中JQuery不会对隐性错误进行提示。
先给出问题的代码块。主要功能是依据后台传參选择radio是否选中。
<%-- <c:choose>
<c:when test="${gj.notmodelbad=='1' }">
<input type="radio" name="nobad" value="1" checked="checked" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符,无法推断</label><br />
<input type="radio" name="nobad" value="2" style="margin-left:112px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非我司模块问题</label>
</c:when>
<c:when test="${gj.notmodelbad=='2' }">
<input type="radio" name="nobad" value="1" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符,无法推断</label><br />
<input type="radio" name="nobad" value="2" checked="checked" style="margin-left:109.5px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非模块问题</label>
</c:when>
<c:otherwise>
<input type="radio" name="nobad" value="1" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符。无法推断</label><br />
<input type="radio" name="nobad" value="2" style="margin-left:112px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非我司模块问题</label>
</c:otherwise>
</c:choose> --%>
EL表达式${gj.notmodelbad}的值可能为空,需进行处理。
我的解决方式:加入JQuery。依据后台传參动态赋值。
<div>
<c:choose>
<c:when test="${gj.badtype=='2'}">
<input type="checkbox" value="2" id="nomd" checked="checked"/>
</c:when>
<c:otherwise>
<input type="checkbox" id="nomd" value="2" />
</c:otherwise>
</c:choose>
<label><strong>非模块不良</strong></label> <table class="bdrighttab">
<tr>
<td style="width:100px;"><input id="nobadRad1" type="radio"
name="nobad" value="1" style="margin-left:112px;" /><label
style="margin-left:5px;font-size:14px;">信息描写叙述不符。无法推断</label><br />
<input id="nobadRad2" type="radio" name="nobad" value="2"
style="margin-left:112px;font-size:14px;" /><label
style="margin-left:5px;font-size:14px;">现场分析部件正常。非我司模块问题</label>
<input type="text"
style="background-color:#e4e4e4;border-style:solid;border-color:#B0B0B0;border-width:thin;"
class="otherreason" value="${gj.otherreason}" /></td>
</tr>
<%-- <c:choose>
<c:when test="${gj.notmodelbad=='1' }">
<input type="radio" name="nobad" value="1" checked="checked" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符,无法推断</label><br />
<input type="radio" name="nobad" value="2" style="margin-left:112px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非我司模块问题</label>
</c:when>
<c:when test="${gj.notmodelbad=='2' }">
<input type="radio" name="nobad" value="1" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符,无法推断</label><br />
<input type="radio" name="nobad" value="2" checked="checked" style="margin-left:109.5px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非模块问题</label>
</c:when>
<c:otherwise>
<input type="radio" name="nobad" value="1" style="margin-left:18px;"/><label style="margin-left:5px;font-size:14px;">信息描写叙述不符。无法推断</label><br />
<input type="radio" name="nobad" value="2" style="margin-left:112px;font-size:14px;"/><label style="margin-left:5px;font-size:14px;">现场分析部件正常,非我司模块问题</label>
</c:otherwise>
</c:choose> --%>
</table>
</div> </div>
JQuery动态赋值:
$(document).ready(function(){
var notmodelbad = ${gj.notmodelbad};
if(notmodelbad=='1'){
$("#nobadRad1").attr("checked",true);
$("#nobadRad2").attr("checked",false);
}
else if(notmodelbad=='2'){
$("#nobadRad1").attr("checked",false);
$("#nobadRad2").attr("checked",true);
}
});
后台的.do型方法
// 市场并联交互
@RequestMapping("maMutualGd.do")
public String MaMutualGd(HttpServletRequest request,
HttpServletResponse response) throws Exception {
String type = request.getParameter("type");
int marketjiaohuid = Integer.valueOf(request.getParameter("id"));
String vCode = String.valueOf((request.getParameter("vcode")));
String date_from1 = String.valueOf((request.getParameter("datfrom")));
String date_to1 = String.valueOf((request.getParameter("datto")));
getCurrentInfo(type, vCode, date_from1, date_to1);
List<OdspappTGongdan> odspappTGongdanDtoList = qualityPerformanceService
.getOdspappTGongdanDtoList();
List<OdspappTGongdan> gdlist = new ArrayList<OdspappTGongdan>();
List<OdspappTGongdan> gdcloselist = new ArrayList<OdspappTGongdan>();
for (OdspappTGongdan g : odspappTGongdanDtoList) {
if (g.getJiaohustatus().equals("4")) {
gdcloselist.add(g);
} else {
gdlist.add(g);
}
}
OdspappTGongdan gd = new OdspappTGongdan();
if (type.substring(1, 2).equals("0")) {
gd = gdlist.get(marketjiaohuid);
request.setAttribute("gd", gd);
} else {
gd = gdcloselist.get(marketjiaohuid);
request.setAttribute("gd", gd);
}
GongdanBadJiaohu gj = qualityPerformanceService.getGdJiaohuInfo(
gd.getGdCode(), gd.getZyAccount());
if (gj.getChangestatus() == null || gj.getChangestatus() == "") {
gj.setChangestatus("0");
}
if (gj.getNotmodelbad() == null || gj.getNotmodelbad() == "") {
gj.setNotmodelbad("0");
}
System.out.println("Changestatus:" + gj.getChangestatus());
System.out.println("Notmodelbad:" + gj.getNotmodelbad()); request.setAttribute("gj", gj);
// request.getRequestDispatcher("UserEvaluation.jsp").forward(request,
// response);
return "pages/usersEvaluation/UserMutual";
}
处理后的效果:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
补充。此问题另一种简单的处理方式,就是用图片取代radio。选中或不选中,换两张图即可。
问题代码尽管不是本人所写。但也提醒了我对Java空值处理的重要性。以后写代码时一定要增加NULL的推断,有时我们遇到的大多数空指针异常,基本都是未初始化导致的NULL值异常。
网页页面NULL值对浏览器兼容性的影响的更多相关文章
- Null 值对索引排序的影响案例一则
--原SQL 语句如下:select * from (select tmp_tb.*, ROWNUM row_id from (select wpid, customer_id, customer_n ...
- CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案
一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...
- 关于页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
需求 最近在做博客的目录功能,发现一个在现代浏览器间的一个bug,或是称之为差异,即页面滚动值(scrollTop)的获取与设定. 在此之前先说一下关于页面元素的坐标获取,这张图的经典性不必再提. 实 ...
- Web前端页面的浏览器兼容性测试心得(二)搭建原汁原味的IE8测试环境
如果你做的页面被老板或PM要求兼容IE8,你就值得同情了.IE8不支持HTML5,在2017年的前端界,开发者不涉及HTML5标准简直寸步难行.然而,有一个可怕的事实客观存在,那就是IE8是Win7系 ...
- HTML`CSS_网站页面不同浏览器兼容性问题解决
目前,最为流行的浏览器共有五个:分别是ie,Edge浏览器(属于微软),火狐,谷歌(chrome)Safari和Opera五大浏览器. Trident内核:IE ,360,,猎豹,百度: Gecko内 ...
- 从零开始的全栈工程师——html篇1.8(知识点补充与浏览器兼容性)
知识点补充 一.浏览器的兼容问题(关于浏览器的兼容问题 有很多大佬已经解释的很清楚了 这个得自己百度去多花点时间去了解 这里咱们只说一下前面的漏点) 浏览器兼容性问题又被称为网页兼容性或网站兼容性问题 ...
- CSS 多浏览器兼容性问题及解决方案
兼容性处理要点1.DOCTYPE 影响 CSS 处理 2.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 ...
- css不同浏览器兼容性调试 --- 转自: [http://wo.115.com/?ct=detail&id=31733&bid=1018841]
css不同浏览器兼容性调试 IE6.0,IE7.0与Firefox的CSS兼容性问题1.DOCTYPE 影响 CSS 处理 2.FF: div 设置 margin-left, margin-right ...
- 【转】CSS浏览器兼容性与解析问题终极归纳
1.怪异模式问题:漏写DTD声明,Firefox仍然会按照标准模式来解析网页,但在IE中会触发怪异模式.为避免怪异模式给我们带来不必要的麻烦,最好养成书写DTD声明的好习惯. 2.IE6双边距问题:在 ...
随机推荐
- Jmeter之WebService接口测试
一.简介 1.JMeter3.2前的版本,可以使用SOAP/XML-RPC Request插件直接进行webservice接口,而3.2后的版本则已经取消了这个接口,需要另外的方法才能进行测试. 2 ...
- 使用Let's Encrypt 生成免费的ssl证书的详细过程
参考连接:https://github.com/diafygi/acme-tiny 中文:https://hacpai.com/article/1487899289204 目前我了解可以生成免费证书的 ...
- formSelects-v4.js 基于Layui的多选解决方案
https://hnzzmsf.github.io/example/example_v4.html
- win下配置qt creator 能够执行c/c++
首先需要相关包共四个: qt-win-opensource-4.8.5-mingw.exe qt-creator-windows-opensource-2.8.1.exe MinGW-gcc440_1 ...
- Codeforces Round #569 题解
Codeforces Round #569 题解 CF1179A Valeriy and Deque 有一个双端队列,每次取队首两个值,将较小值移动到队尾,较大值位置不变.多组询问求第\(m\)次操作 ...
- python 3计算KL散度(KL Divergence)
KL DivergenceKL( Kullback–Leibler) Divergence中文译作KL散度,从信息论角度来讲,这个指标就是信息增益(Information Gain)或相对熵(Rela ...
- laydate组件选择时间段的判断
前言: 在使用laydate组件的时候,难免会遇到选择时间段,官网给的文档中有选择时间段的组件,但是并不好用,首先只能选择一个月的时间段,有局限性,其次精确到时间的话要先选日期范围再选时间范围,很变态 ...
- RNNCell使用
目录 Recap input dim, hidden dim SimpleRNNCell Single layer RNN Cell Multi-Layers RNN RNN Layer Recap ...
- 89-Relative Vigor Index 相对活力指数指标.(2015.7.4)
Relative Vigor Index 相对活力指数指标 ~计算: RVI = (CLOSE-OPEN)/(HIGH-LOW) RVIsig=SMA(RVI,N) ~思想: 牛市中,收盘>开盘 ...
- 腾讯ISUX网站的一个小问题
腾讯isux网站的一个小问题. 它的网站:http://isux.tencent.com/?variant=zh-hans 优秀的网站和差的网站的距离往往就在于细节. 浏览环境:谷歌. ...