欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

论项目失败之处_window.open的使用

程序员文章站 2022-07-15 16:08:31
...

项目背景: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 窗口离屏幕左边距离(像素单位)