ntraweb多窗口问题.doc

上传人:鲁** 文档编号:560555353 上传时间:2022-10-10 格式:DOC 页数:4 大小:32.51KB
返回 下载 相关 举报
ntraweb多窗口问题.doc_第1页
第1页 / 共4页
ntraweb多窗口问题.doc_第2页
第2页 / 共4页
ntraweb多窗口问题.doc_第3页
第3页 / 共4页
ntraweb多窗口问题.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《ntraweb多窗口问题.doc》由会员分享,可在线阅读,更多相关《ntraweb多窗口问题.doc(4页珍藏版)》请在金锄头文库上搜索。

1、ntraweb多窗口问题2008-12-18 18:45:16|分类: 默认分类 |举报 |字号订阅 不知何时我的这一个关于intraweb的 blog变成了围绕intraweb多窗口这一个问题转.好几遍文章似乎都是为了实现这一目标而准备一样,当然啦我们的网友也是一直在烦努这一个,想用, 但又不想实现类似page模式的那种不可靠或是用其它的js框架例如extjs的方式来实现,一直在郁闷之中.我看到这一个状况也是有点郁闷, 希望大家能够更专注于业务逻辑的实现,为了使大家更专注,现提供一个简单的解决办法,当然啦,想精益求精的朋友可要认真学习js文面的知识哦,好了废话不 说,马上去片首先分析. 何谓

2、多窗体呢?我总结出来是这样子的,是一个容器,一个独立的容器,能够放其它任何form能放的component,并且能被拖动,可以关闭,显示等. 在iw中最直接的一个想法就是多个ie窗口.只好用page或是仿page模式了.关于这种方法的利敝我想有用过的朋友早己领教过了,反正我是不用的.像 我之前说的,可能以用arc控件,但是那一个控件只能popup一个窗体,并且是模式的,不能做多窗体效果.我分析了一下iw的js代码,其实iw是把这 些子窗体放在一个div里面而己,只是没有加上可拖动的代码,所以我们如果用起来就很烦了.(现实中,div标签就是纯html或asp之类语言实现主从 窗体的一个解决办法,

3、当然啦还有opendialog,但opendialog在firefox中并不能运用) 在intraweb的众多控件中能作为容器并能在客户端生成div标签的除了刚才提到的arc控件之外还有intraweb自带的 iwregion与iwframe,那很明显了,我们准备要下手的就是iwframe.我们用iwframe作为我们的子窗体.在用iwframe之前首 先加入一个iwregion到期iwframe中,algin:=altop;color=蓝色,name=reghead,在reghead中 放入一个iwimage,algin=alclient;在iwimage.eventscript.onmou

4、sedown中加入如入js代码var ids=this.parentElement.parentElement.parentElement.id;var mydiv=document.getElementById(ids);var maxzindex=0;var thiszindex=0;var divs=document.getElementsByTagName(DIV) for(var i=0;imaxzindex)maxzindex=thiszindex;thiszindex=0;mydiv.style.zIndex=maxzindex+1;drag(mydiv);function dr

5、ag(div) div.onmousedown=function(a) var d=document; var e=d.body?d.body:d.documentElement; if(!a)a=window.event; var x=a.layerX?a.layerX:a.offsetX, y=a.layerY?a.layerY:a.offsetY; if(div.setCapture) div.setCapture(); else if(window.captureEvents) window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP); d

6、.onmousemove=function(a) if(!a)a=window.event; var ex = a.clientX?a.clientX:a.pageX, ey = a.clientY?a.clientY:a.pageY; var scrollY = e.scrollTop; var scrollX = e.scrollLeft; var tx=ex-x+scrollX, ty=ey-y+scrollY; if(x25) var w=parseInt(div.style.width).replace(px,), h=parseInt(div.style.height).repla

7、ce(px,); return false; div.style.left=tx; div.style.top=ty; ; d.onmouseup=function() if(div.releaseCapture) div.releaseCapture(); else if(window.captureEvents) window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP); d.onmousemove=null; d.onmouseup=null; ; ; 这段代码有两个重要的作用 1.设定iwimage所有的iwframe在客户端生成的div能

8、被鼠标按着iwimage的时候拖动2.设定这个div的zindex始终为最大值,一直位于顶层,不被其它的div覆盖.然后在这一个iwimage的scriptevent.onmouseout事件里面消除以上所设定的事件,js代码如下var ids=this.parentElement.parentElement.parentElement.id;var mydiv=document.getElementById(ids);mydiv.onmousemove=null;mydiv.onmousedown=null;mydiv.onmouseup=null;至此为止这一个iwframe的移动代码就可以完成了.把这一个修改后的iwframe放在任何的一个iwappform中都可以移动了,当然啦如果我们有多个这样的iwframe就都可以在同一个iwappform中拖动来达到多窗体的效果.关于如何动态生在这些iwframe我在这里就不累述了.不过有一点要提醒的是,由于在客户端用js导至的top,left,等变化的数据并没有传 到服务器上面,所以当iwappform页面一量刷新,那么所有的iwframe都会归会原来的位置,但是这些都是可以调并可以处理手段太多就不一一累述 了.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号