我是Didizyp

期待那比十亿分之一还小的机会!

用户操作
[即时聊天] [发私信] [加为好友]
zhengsmileID:Didizyp
57832次访问,排名1995,好友20人,关注者20人。
一个希望成为英雄的普通人。
Didizyp的文章
原创 48 篇
翻译 0 篇
转载 0 篇
评论 33 篇
Didizyp的公告
首先向各位朋友道个歉!由于个人原因,最近很少登陆自己的博客,所以一直没有跟刘怀帮、庹小虎、gis等朋友及时联系过,十分抱歉!
我的Mail:didizyp@mail.csdn.net
最近评论
weiguochuli:好!真好!
fly0916:[TestFixture]
class BookTest
在class前应加public
fenglibing:哥哥,你太强了,这么多你都写得出来
CaiKanXP:所谓的“成人动画”,就如蜡笔小新和樱桃小丸子
lvziking:说的好
文章分类
收藏
    相册
    我眼中的上海
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 弹出页面回调调用者页面小技巧收藏

    新一篇: 从当前的项目说起-杂说编码 | 旧一篇: Java学习要点

        最近在公司做一个内部项目,其中一个功能是数据批量导入。系统在调用这个功能后,会弹出一个窗口,然后选择要导入的文件,将文件中的数据展示在下一页面,最后是执行导入。如此,这个导入功能就会先后跳转三个页面,没法使用window.showModalDialog,因为使用window.showModalDialog在跳转到第二个页面后,浏览器会弹出另一个窗口,这样的话就只能使用window.open了。可是使用window.open还有一个问题,就是不会阻塞,原窗口与弹出窗口之间均可操作,这样的话数据导入后就不好刷新原窗口了。
     后来查了下《DHTML手册》,看到opener对象,它是原窗口在被调用窗口中的对象,即我在被调用窗口中执行window.opener,会取得原窗口。虽然这个对象我早就知道,但在我印象里似乎用window.open调用的窗口是无法取得opener的。不过想了想,似乎也就这么一道办法了,所以还是试验了下,并在IE6、IE7和Chrome中测试通过。这里需要注意的是,opener完全就是原窗口的对象,它的所有成员跟原窗口一致。
     虽然我不能把公司的程序拷在这里,但可以将自己写的测试例子留在这儿:
     a.html的代码:
    <html>
     <head>
      <title>调用者</title>
      <script language="javascript">
       function openPage() {
        window.open("b.html");
       }
       
       function ref() {
        document.getElementById("divshow").innerText = "test";
       }
      </script>
     </head>
     <body>
      <div id="divshow"></div>
      <button id="openButton" onclick="openPage()">打开</button>
      <button id="refButton" onclick="ref()" style="display:none;">执行</button>
     </body>
    </html>
    该页面负责调用弹出窗口,其中的refButton按钮就是我要用来执行操作的对象。

     b.html的代码:
    <html>
     <head>
      <title>被调者</title>
      <script language="javascript">
       function goPage() {
        location.href = "c.html";
       }
      </script>
     </head>
     <body>
      <button id="goButton" onclick="goPage()">跳转</button>
     </body>
    </html>
    该页面为弹出页面,不过这里为了试验,并没有让b.html调用原窗口的refButton按钮,而是跳转到下一页面。

     c.html的代码
    <html>
     <head>
      <title>跳入者</title>
      <script language="javascript">
       function closePage() {
        var o = window.opener.document.getElementById("refButton");
        o.click();
       }
      </script>
     </head>
     <body onunload="closePage()">
      <button id="closeButton" onclick="window.close()">关闭</button>
     </body>
    </html>
    这个页面会在关闭的时候调用原窗口的refButton按钮的click事件。这里需要注意的是,若是在实际开发中,为了预防各种情况,建议为closePage中的o对象增加一个判断,即判断该对象是否为空。

    发表于 @ 2008年10月19日 08:37:00|评论(loading...)|编辑|收藏

    新一篇: 从当前的项目说起-杂说编码 | 旧一篇: Java学习要点

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © Didizyp