Mozilla 浏览器下一些web应用的技巧和心得

近来写的web应用要发布在Mozilla浏览器下使用,遇到一些比较奇怪的问题,现写出来与大家一起
   分享.
   1.根据浏览器的不同自动来切换到不同的页面
   因为在IE下和Mozilla浏览器下显示的页面还是有很大的不同,所以为方便代码的维护,还是决定将两
   种不同浏览器下的web程序分开了,这样显得条理更清晰.
   此功能可以很简单的通过javascript脚本来控制页面的不同展现,代码如下:
   <%
          String toUrl = request.getContextPath()+"/pcitc/main/web0.jsp";
          String toMzUrl = request.getContextPath()+"/pcitc/main/web0_mz.jsp";
   %>
   <script language=javascript>

   if((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion)>= 4))
   {
       document.location="<%=toUrl%>";
   }
   else {
      document.location="<%=toMzUrl%>";
   }

   </script>
   2.要注意发布端口的选择对javascript的影响(mozilla浏览器)
    同样的javascript脚本在不同的端口发布会产生不同的结果,主要说的是80端口和非80端口,如
   果web应用程序是发布在非80端口的话,mozill浏览器会认为该web应用程序还处在开发阶段,故
   安全级别会比较低,在这种情况下,一般的javascript脚本和在IE下显示的效果是没什么区别的,
   但如果一旦将web应用程序发布到80端口,此时mozilla浏览器会将对javscript的安全级别提高,某
   些原本在其他端口能正常显示的功能会突然变的不正常,那么这个时候就应该调整javscript的代
   码,尽量使其更安全.
   举例:在IE中我们经常要操作在子窗体中获得父窗体的某个frame的某种特性或操作其他窗体的
   显示
   父窗体代码:
   <script language=javascript>
   function setCategoryValue(appId,cateCode,cateOid,userId,canEditIds) {

     appFrame.location='http://<%=request.getServerName()%>:<%=request.getServerPort()%>/pmi/ltmetainfo/pcitcinfolist.jsp?app_id='+appId+'&category='+cateCode+'&cateOID='+cateOid+'&user_id='+userId+"&isfirst=1
&can_edit_ids="+canEditIds;
}
   </script>
<FRAMESET ID="app" FRAMESPACING="0" COLS="20%,8,*">
 <FRAME SRC="http://<%=request.getServerName()%>:<%=request.getServerPort()%>/pmi/ltmetainfo/subjecttree.jsp?user_id=<%=userId%>" NAME="subjectTreeFrame"
SCROLLING="AUTO" border="0" frameborder="no">
 <FRAME NAME=middle SRC="app_middle.jsp" noResize SCROLLING="NO" frameborder="no">
 <FRAME SRC="" NAME="appFrame" SCROLLING="AUTO" ID="appFrameId" frameborder="no"> 
</FRAMESET>
子窗体subjecttree.jsp:
url="javascript:parent.setCategoryValue(//'"+appId+"//',//'"+sub.getCode()+"//',//'"+sub.getCateOID()+"//',//'"+userId+"//',//'"+canEditIds+//');
此代码去调用父窗体的setCategoryValue函数来展现appFrame的内容.
原本这样的代码在其他端口就能正常显示,但一部署到80端口,该js脚本就出错.错误的原来是
在mozilla浏览器下80端口中parent方法不能使用.在反复思考和调试下,决定将parent方法摈弃掉,
而改用表单提交的方法,所以对subjecttree.jsp做如下的修改:
url="javascript:setCategoryValue(//'"+appId+"//',//'"+sub.getCode()+"//',//'"+sub.getCateOID()+"//',//'"+userId+"//',//'"+canEditIds+//');
将其中的parent删除,同时将setCategoryValue方法移到该页面.
function setCategoryValue(appId,cateCode,cateOid,userId,canEditIds) {
document.menu_right.action="http://<%=request.getServerName()%>:<%=request.getServerPort()%>/pmi/ltmetainfo/pcitcinfolist.jsp?app_id="+appId+"&category="+cateCode+"&cateOID="+cateOid+"&user_id="+userId+"&isfirst=1
&can_edit_ids="+canEditIds;
 document.menu_right.submit();
}
然后添加一个表单,表单中指定要操作的对象是appFrame,代码如下:
<form name="menu_right" action="" method="post" target="appFrame">
</form>
做上述修改后,页面方正常显示.

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值