论项目失败之处_window.open的使用
项目背景:XXXX资金监管系统,为保证房地产开发公司携款潜逃或者不作为,开发商需要交一部分资金到银行由建委来监管这部分资金的使用。
项目业务操作样式的初步计划:采用弹出框实现所有业务的增加和修改操作。
失败之处:采用window.open没有考虑到兼容性的问题。所以现在只是在IE6.0下,才是弹出效果。
例子如下:
列表页面调用Js方法:
function goAdd(){ var url = "${ctx}/XX/XX.do?method=create"; openAddWindow(url,700,380); }
openAddWindow方法在一个js文件中封装,代码如下:
function openAddWindow(_sUrl,winWidth,winHeight) { control = window.open(_ctx+"/rbac/index.do?method=toAddSkin#"+_sUrl,"HFMP_INFO","width="+winWidth+",scrollbars=no,location=no,status=no,height="+winHeight+",left=" + (window.screen.width-winWidth)/2 + ",top=" + (window.screen.height-winHeight)/2); control.focus(); }
/rbac/index.do?method=toAddSkin代码如下:
public ActionForward toAddSkin(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { return mapping.findForward("addskin"); }
addskin跳转指向的jsp页面代码如下:
<body> <div> <script language="javaScript"> document.write('<iframe id="mid" name="mid" width="'+(parseInt(document.body.clientWidth)-10)+'" height="'+(parseInt(document.body.clientHeight)-60)+'" frameborder="0" scrolling="yes"'); var n=self.location.href.indexOf("#"); if (n>0) { document.write(" src="+self.location.href.substr(n+1)); } document.write('></iframe>'); </script> </div> </body>
由代码可以看出,我采用弹出框跳转的页面中有使用了iframe框架。
因为我开发一直使用的是IE6.0,当项目经理提出要使用弹出框进行业务操作的时候,我丝毫没有考虑到浏览器的兼容性问题。并且在建委那客户也使用的是IE6,但是开发商有很多家,不能保证全部使用IE6。使用360 4.1虽然不影响使用但是达不到起初想象的那种效果了。所以这是一个失败的地方。因为我们公司;历来没有项目后评价这一传统,所以只能是我自己总结。今天无意中使用360上网浏览网页,发现了这个问题。汲取教训,总结经验,一往无前。
附:(请参考w3help:http://www.w3help.org/zh-cn/causes/BX1053)
window.open函数参数列表window = object.open([URL ][, name ][, features ][, replace]]]])
URL:新窗口的URL地址
name:新窗口的名称,可以为空
featurse:属性控制字符串,在此控制窗口的各种属性,属性之间以逗号隔开。
fullscreen= { yes/no/1/0 } 是否全屏,默认no
channelmode= { yes/no/1/0 } 是否显示频道栏,默认no
toolbar= { yes/no/1/0 } 是否显示工具条,默认no
location= { yes/no/1/0 } 是否显示地址栏,默认no
directories = { yes/no/1/0 } 是否显示转向按钮,默认no
status= { yes/no/1/0 } 是否显示窗口状态条,默认no
menubar= { yes/no/1/0 } 是否显示菜单,默认no
scrollbars= { yes/no/1/0 } 是否显示滚动条,默认yes
resizable= { yes/no/1/0 } 是否窗口可调整大小,默认no
width=number 窗口宽度(像素单位)
height=number 窗口高度(像素单位)
top=number 窗口离屏幕顶部距离(像素单位)
left=number 窗口离屏幕左边距离(像素单位)