Mozilla

火狐社区

登录    注册

用新浪微博连接

[综合讨论] 火狐4.0和以上版本在div后无法运行js代码

lizhijian 发表于 2012-3-2 11:44:44 | 显示全部楼层 [复制链接]
2 68
下面就是页面的代码,这个页面是嵌套在主页面一个div中的,并且是在主页面加载完,后和服务器有一次交互,得到ls后才在主页面中显示的,这段代码在火狐3.6中是正常的,4.0以后就有问题了,(ls是一个list,位置在代码中有加粗、加下划线)

这个问题并不是只有火狐浏览器才有,chrome,遨游都有问题,ie正常,这是网站的地址:www.4008812356.com 用户名:shishun 密码:shishun123 进去后选择旧版 ,会发现网页加载不全,就是因为js代码没执行。 将火狐错误控制台显示的错误改好,又会有新的js错误,而报的错误的地方在3.6版本中又可以正常运行

<%@page contentType="text/html;charset=utf-8" language="java"%>
<%@include file="../common/jsphead.inc"%>
<%
StringBuffer online=new StringBuffer();
Map accmap=SessionMap.getAccountMap();
Iterator keyit=accmap.keySet().iterator();
int onlinecount=0;
while(keyit.hasNext()){
Object account=keyit.next();
online.append(account+"&#13;&#10;");
onlinecount++;
}
%>
<div style="width:100%;height:58px;background:url('resources/image/top/top1.jpg') #3d9ec1 no-repeat;z-index:1;">
<embed wmode="transparent" src="resources/image/top/dian.swf" width="100%" height="100%" />
<div style="position:absolute;top:3px;right:3px;z-index:1;">
[<a href='portal.htm' target="_blank">首页</a>]
<!--[<a href="javascript:viewhelp()">帮助</a>]-->
<!--[<a href="javascript:viewchangepwd()">设置密码</a>]-->
[<a href="javascript:viewselfinfo()">用户信息</a>]
[<a href="logout.htm">退出</a>]
</div>

<div style="position:absolute;top:40px;right:3px;z-index:1;">
登录时间:${loginTime} ${user.user_name} <!-- ${dept.dept_name} -->
<span title="<%=online%>">在线:<%=onlinecount%>人</span>
</div>
</div>

<div id="tabmenu0" class="tabmenu0" style="position:absolute;top:58px;z-index:1;">
<ul>
<c:forEach items="${ls}" var="aobj" varStatus="vs">
<c:if test="${not empty aobj.name}">
<li><a href="javascript:void(0)" id='${aobj.id}' onclick="funcsel(this)" title="${aobj.title}">${aobj.name}</a>
</c:if>
<c:if test="${fn:length(aobj.child)>1}">
<!--ul>
<c:forEach items="${aobj.child}" var="cobj" varStatus="cvs">
<li><a href="javascript:void(0)" id='${cobj.id}' onclick="" title="${cobj.title}">${cobj.name}</a></li>
</c:forEach>
</ul-->
</c:if>
</li>
<c:if test="${vs.first}">
<c:set var="firstid" scope="page" value="${aobj.id}"/>
</c:if>
</c:forEach>
</ul>
</div>

//就是下面的js代码不能执行
<script>
var tabmenu0_span_lays=[];//标签页div的定义对象列表


//加载标签内容项


<c:forEach items="${ls}" var="aobj" varStatus="vs">
tabmenu0_span_lays.push({id:'tabmenu0_span${aobj.id}', w:'100%', h:'100%', split:0, cls:'hide'});
</c:forEach>
createLayout('main',1,tabmenu0_span_lays);//main.jsp中定义id=main

//根据屏幕尺寸计算区域大小...

//根据状态加载一个功能菜单项
defaulttab_click('tabmenu0','${firstid}');

/**
* 选择某项功能
*/
function funcsel(obj){
var index=parseInt(obj.id);
var bloaded=tabsel('tabmenu0',index);
if(bloaded){//如果已经加载过标签


return;
}
var left_lay={id:'left'+index, w:'180px', h:'100%', split:1, style:'z-Index:2;'};
var right_lay={id:'right'+index, w:(parseInt(main_lay.w)-180-9)+'px', h:'100%', split:0, style:'overflow-x:hidden; overflow-y:hidden;'};
createLayout('tabmenu0_span'+index,1,[left_lay,right_lay]);
load('left'+index, 'main.htm?method=getmenu&pid='+index+'&type=0&url=main/nav');
switch(index){
//case 2:
//break;
default:
break;
}
}
/**
* 显示帮助信息
*/
function viewhelp(){
var tabindex=gettabsel('tabmenu0');
if(tabindex<=0){
tabindex='${firstid}';
}
var obj=getChild('tabmenu0','a',tabindex);
if(obj!=null){
popUp2(800, 500, 'HelpDiv', '帮助', 'main.htm?method=gethelp&id='+obj.id, null, true, true);
}
}
/**
* 修改密码
*/
function viewchangepwd(){
popUp2(500, 200, 'ChangePwdDiv', '修改密码', 'main.htm?url=main/changepwd&account=${user.account}', null, true, true);
}
function viewselfinfo(){
popUp2(800, 400, 'SelfInfo', '用户信息', 'user.htm?url=systools/user/self_view', null, true, true);
}
/**
* 根据窗口大小调整区域尺寸
*/
window.onresize = function(){
resetMainSize();
resizeLayout([header_lay,main_lay]);//,footer_lay
resetSpanSize();
}

function resetMainSize(){//重新调整main布局对象的尺寸


var size=getSize();
var main_h=size.h-parseInt(header_lay.h);//-parseInt(footer_lay.h);
main_lay.w=(size.w)+'px';
main_lay.h=(main_h)+'px';
//status=size.w+','+size.h;
}

function resetSpanSize(){//重新调整span布局对象的尺寸


//重新计算右帧的尺寸


for(var i=0; i<tabmenu0_span_lays.length; i++){
var inner_lay=document.getElementById(tabmenu0_span_lays.id);
if(inner_lay!=null && !undef(inner_lay.childNodes[0])){//中间可能有分隔条
var len=inner_lay.childNodes.length;
//status=i+','+len;
if(len>1){//定位修改右边区域的宽度(左不变)
var left_w=parseInt(inner_lay.childNodes[0].style.width);
var index=Sys.ie ? len-2 : len-3;
inner_lay.childNodes[index].style.width=(parseInt(main_lay.w)-left_w-9)+'px';
}
}
}
}
</script>
发表于 2012-3-2 12:22:16 | 显示全部楼层
亲,座位一位开发者,可要学会自己Debug哦,这段代码我也没有去运行,不过我觉得,我们自己代码出错的可能性也许 要 大于Firefox出错的可能性,对么~

点评

谢谢你的回复,关键是,我把<script/>标签中的js代码都删掉,改成alert("hello");都不会有hello的提示框出现。  发表于 2012-3-5 10:07
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发新帖
论坛更多 »
热门活动更多 »
  • Rust 见面会——近距离了解新一代系统编程语言[北京]

    立即参与
  • 【开源者行】北京航空航天大学站火热启动!

    立即参与
火狐微信
快速回复 返回顶部 返回列表