jQuery MiniUI

标题: 窗口有时关不掉 [打印本页]

作者: ccrise    时间: 2013-8-5 15:07:13     标题: 窗口有时关不掉

<script language="javascript" type="text/javascript">
        function CloseWindow(action)
        {
            if (window.CloseOwnerWindow)
            return window.CloseOwnerWindow(action);
            
            else window.close();
        }
            function closeminfor()
        {
            CloseWindow("cancel");
            parent.mainFrame.frames[0].grid.reload();
        }
    </script>  ---这是我前台写的关闭窗口的方法,

我i想在后台去调用这个方法,
ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "alert", "setTimeout('closeminfor()',50)", true);

但有时关不掉,我现在没时间在去改页面了,所以才这么调用的,能帮我看下如果用我目前这个方式,怎么能每次都关掉页面嘛?



作者: niko    时间: 2013-8-6 09:24:13

ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "alert", "setTimeout('closeminfor()',500)", true);

把延迟时间加大试试
作者: ccrise    时间: 2013-8-6 11:25:32

niko 发表于 2013-8-6 09:24
ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "alert", "setTimeout('closeminfor()',500 ...

加大过,也会出现,因为不能判断程序是否在这个时间内执行完成!

还有别的办法嘛?

不能直接在后台调前台的这个function    closeminfor()    嘛?

作者: ccrise    时间: 2013-8-6 11:35:58

ccrise 发表于 2013-8-6 11:25
加大过,也会出现,因为不能判断程序是否在这个时间内执行完成!

还有别的办法嘛?

我不加setTimeout 在后台怎么调用前台的那个  closeminfor()   ?
作者: factory    时间: 2013-8-6 14:23:49

ccrise 发表于 2013-8-6 11:35
我不加setTimeout 在后台怎么调用前台的那个  closeminfor()   ?

不加settimeout的话,用window.onload = ...

ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "alert", "window.onload = function(){closeminfor();}", true);
作者: ccrise    时间: 2013-8-6 14:39:22

factory 发表于 2013-8-6 14:23
不加settimeout的话,用window.onload = ...

ClientScript.RegisterClientScriptBlock(this.Page.GetTyp ...

这种方法试过,也是关不掉!
作者: niko    时间: 2013-8-6 17:19:35

1.关闭此页面方法是:CloseWindow
2.你只需要一个合适的实际调用此方法即可
3.建议你延迟500毫秒左右

作者: ccrise    时间: 2013-8-7 08:50:36

niko 发表于 2013-8-6 17:19
1.关闭此页面方法是:CloseWindow
2.你只需要一个合适的实际调用此方法即可
3.建议你延迟500毫秒左右

我知道,延迟500可能程序在这个时间内执行不完,延迟太久效果不是很好,所以我想找个不用setTimeout的方法调用~~~~~~factory  在帮我看看吧谢啦
作者: factory    时间: 2013-8-7 09:37:09

ccrise 发表于 2013-8-7 08:50
我知道,延迟500可能程序在这个时间内执行不完,延迟太久效果不是很好,所以我想找个不用setTimeout的方 ...

这个没办法了,页面的加载然后正常执行某个方法,只能这样吧
作者: ccrise    时间: 2013-8-7 09:49:11

factory 发表于 2013-8-7 09:37
这个没办法了,页面的加载然后正常执行某个方法,只能这样吧

晕你们自己都没办法了?

按你说的用window.onload执行完了,窗口关不掉,但肯定是执行了,不知道哪的问题,你们i自己做的控件,不能帮我找下原因嘛?感激不尽啊很着急!
作者: niko    时间: 2013-8-7 11:49:20

1.用window.onload
2.在window.onload内再setTimeout
3.你自己想什么时候关闭页面,把控时机就好了,我们只能提供关闭页面的方法
作者: niko    时间: 2013-8-7 12:27:27

终极方法:
1.设置一个JS变量
ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "alert", "var autoClose = true");
2.判断变量,在方法定义后面调用
function closeminfor()
        {
            CloseWindow("cancel");
            parent.mainFrame.frames[0].grid.reload();
        }
if(window.autoClose){
    closeminfor();
}

这下肯定可以按顺序和时间关闭了。

作者: ccrise    时间: 2013-8-7 15:46:04

niko 发表于 2013-8-7 12:27
终极方法:
1.设置一个JS变量
ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "alert", "va ...

按这方法试了,也不行,我崩溃了,如果你那有时间的话,能帮我远程看下嘛?397879843,我实在没招了!

你在本地试过吗?
作者: ccrise    时间: 2013-8-7 15:52:53

ccrise 发表于 2013-8-7 15:46
按这方法试了,也不行,我崩溃了,如果你那有时间的话,能帮我远程看下嘛?397879843,我实在没招了!

...

<script language="javascript" type="text/javascript">
        function CloseWindow(action) {
            if (window.CloseOwnerWindow) return window.CloseOwnerWindow(action);
            else window.close();
        }
            function closeminfor()
        {
            CloseWindow("cancel");
            parent.mainFrame.frames[1].grid.reload();
        }
    </script>   这是我客户端的方法,你那if放到什么地方啊?有限制嘛?
作者: niko    时间: 2013-8-7 17:36:22

<script language="javascript" type="text/javascript">
        function CloseWindow(action) {
            if (window.CloseOwnerWindow) return window.CloseOwnerWindow(action);
            else window.close();
        }
            function closeminfor()
        {
            CloseWindow("cancel");
            parent.mainFrame.frames[1].grid.reload();
        }
if(window.autoClose){
    closeminfor();
}

    </script>
看黑体部分。
作者: ccrise    时间: 2013-8-8 08:39:48

niko 发表于 2013-8-7 17:36
function CloseWindow(action) {
            if (window.CloseOwnerWindow) return window.Close ...

我这样掉了调了,根本进不到这个if里去!
作者: factory    时间: 2013-8-8 10:05:21

ccrise 发表于 2013-8-8 08:39
我这样掉了调了,根本进不到这个if里去!

你要不还是直接提供一个例子吧,HTML+aspx的例子,我们给你看下
作者: ccrise    时间: 2013-8-8 10:13:26

factory 发表于 2013-8-8 10:05
你要不还是直接提供一个例子吧,HTML+aspx的例子,我们给你看下

我把页面给你发过去,给我个邮箱吧!
作者: ccrise    时间: 2013-8-8 10:15:20

ccrise 发表于 2013-8-8 10:13
我把页面给你发过去,给我个邮箱吧!

要不远程帮我看下?这样更直观些
作者: factory    时间: 2013-8-8 10:39:28

ccrise 发表于 2013-8-8 10:15
要不远程帮我看下?这样更直观些

你直接点击 “高级模式”,里面有上传附件的,上传上来我们看下就行了
作者: ccrise    时间: 2013-8-8 11:53:06

factory 发表于 2013-8-8 10:39
你直接点击 “高级模式”,里面有上传附件的,上传上来我们看下就行了

[attach]2514[/attach]
作者: ccrise    时间: 2013-8-8 11:58:01

ccrise 发表于 2013-8-8 11:53

这是一个aspx 页面一个和这个页面的cs,你们帮我看看吧,我也试过很多办法都不行!
作者: ccrise    时间: 2013-8-8 14:24:12

ccrise 发表于 2013-8-8 11:58
这是一个aspx 页面一个和这个页面的cs,你们帮我看看吧,我也试过很多办法都不行! ...

function miniopen(myUrl,myTitle,myWidth,myHeight)
        {
            mini.open({
                url: myUrl,
                title:myTitle,
                width:myWidth,
                height:myHeight,
                allowResize:false,
                allowDrag:true
            });
        }

在别的页面调用这个方法,打开的压缩包里的页面
作者: ccrise    时间: 2013-8-8 14:26:22

ccrise 发表于 2013-8-8 14:24
function miniopen(myUrl,myTitle,myWidth,myHeight)
        {
            mini.open({

[attach]2516[/attach]这是打开那窗口的页面
作者: factory    时间: 2013-8-8 14:32:38

ccrise 发表于 2013-8-8 14:26
这是打开那窗口的页面

好的,我们看下
作者: ccrise    时间: 2013-8-9 08:59:32

factory 发表于 2013-8-8 14:32
好的,我们看下

还是没有解决方法嘛?
作者: factory    时间: 2013-8-9 09:24:06

你给的页面无法运行,你最好做一个最简单的后台执行前台关闭窗口的方法的demo,就是后台调用前台关闭
作者: ccrise    时间: 2013-8-9 11:10:17

ccrise 发表于 2013-8-9 11:08

win 1 父页面, win2子页面
作者: factory    时间: 2013-8-9 11:35:32

ccrise 发表于 2013-8-9 11:10
win 1 父页面, win2子页面

OK,我们再看下
作者: factory    时间: 2013-8-9 15:01:42

factory 发表于 2013-8-9 11:35
OK,我们再看下

win1和win2,你那边会有win2关闭不掉的情况吗?

我这边测试了不下20次,每次都是成功关闭掉的啊
作者: ccrise    时间: 2013-8-12 11:03:33

factory 发表于 2013-8-9 15:01
win1和win2,你那边会有win2关闭不掉的情况吗?

我这边测试了不下20次,每次都是成功关闭掉的啊 ...

那就那一行代码,肯定没问题了,如果遇到网络延迟等情况肯定不行的!
作者: ccrise    时间: 2013-8-12 11:04:15

ccrise 发表于 2013-8-12 11:03
那就那一行代码,肯定没问题了,如果遇到网络延迟等情况肯定不行的!

在说了,后台代码执行500毫秒可能够可能不够,不然我也不会打扰你们了!
作者: factory    时间: 2013-8-12 11:27:16

ccrise 发表于 2013-8-12 11:04
在说了,后台代码执行500毫秒可能够可能不够,不然我也不会打扰你们了! ...

你在你给的win2.aspx页面,把
function closeminfor()
        {
            CloseWindow("cancel");
        }  

改成

function closeminfor()
        {
            CloseWindow("cancel");
            setTimeout(function () {
                CloseWindow("cancel");
            }, 100);
        }
作者: ccrise    时间: 2013-8-12 11:30:33

factory 发表于 2013-8-12 11:27
你在你给的win2.aspx页面,把
function closeminfor()
        {

那后台怎么调用,现在不是前台关不掉,是后台调用的方式有问题!
作者: ccrise    时间: 2013-8-12 11:31:16

ccrise 发表于 2013-8-12 11:30
那后台怎么调用,现在不是前台关不掉,是后台调用的方式有问题!

你这样无非就是把后台的setTimeout 移到前台了,但后台怎么调用啊?
作者: factory    时间: 2013-8-12 11:35:19

ccrise 发表于 2013-8-12 11:31
你这样无非就是把后台的setTimeout 移到前台了,但后台怎么调用啊?

后台不变,你试试,这样测试了,是可以的
作者: ccrise    时间: 2013-8-12 11:42:33

factory 发表于 2013-8-12 11:35
后台不变,你试试,这样测试了,是可以的

后台还加setTimeout?我本意是将后的setTimeout去掉,现在不去掉,以后可能还会出现关闭不了的情况,你这样又多加了一个?
作者: ccrise    时间: 2013-8-12 11:45:16

ccrise 发表于 2013-8-12 11:42
后台还加setTimeout?我本意是将后的setTimeout去掉,现在不去掉,以后可能还会出现关闭不了的情况,你这 ...

哦我明白你意思了,你意思是后台即便关不掉,前台那过了那个时间也会关闭是吗?
作者: niko    时间: 2013-8-12 12:05:12

function closeminfor()
        {
            CloseWindow("cancel");
            setTimeout(function () {
                closeminfor("cancel");
            }, 100);
        }

这样,及时一次关不掉,后续会继续尝试关闭,肯定能关掉。
作者: ccrise    时间: 2013-8-12 12:10:07

niko 发表于 2013-8-12 12:05
function closeminfor()
        {
            CloseWindow("cancel");

恩明白了!




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2