zoukankan      html  css  js  c++  java
  • JS:window.open加一个callback(未完成)

    有时必须用window.open了,window.showModalDialog的缺点也不少。

    window.open最麻烦的是关闭时通知调用者,写了个callback来做。

    现在没有处理直接点X关闭窗口的情况(估计是有点麻烦的了)。



    Utils.showWindow 
    = function(url,iWidth,iHeight,name,callback)
    {
        
    if (typeof(callback) == "string")
        {
            
    if (url.indexOf("?">= 0)
                url 
    += "&callback=" + callback;
            
    else
                url 
    += "?callback=" + callback;
        }
        
        
    if (url.indexOf("?">= 0)
            url 
    += "&rnd=" + Math.random();
        
    else
            url 
    += "?rnd=" + Math.random();

        
    var iTop = (window.screen.availHeight-iHeight)/2;
        var iLeft = (window.screen.availWidth-iWidth)/2;
        var param = String.format("width={0},innerWidth={0},height={1},innerHeight={1},top={2},left={2},toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no",
                    iWidth, iHeight , iTop, iLeft);
        window.open(url, name, param);
    }


    需要其它函数来:
    Utils.QueryString 
    = function(name)
    {
      
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
      
    var r = window.location.search.substr(1).match(reg);
      
    if (r != null)
          
    return unescape(r[2]);
      
    return null;
    }

    String.format 
    = function() {
        
    if( arguments.length == 0 )
            
    return null;

        
    var str = arguments[0];
        
    for(var i=1;i<arguments.length;i++) {
            
    if (arguments[i] == null)
                arguments[i] 
    = "";
                
            
    var re = new RegExp('\\{' + (i-1+ '\\}','gm');
            str 
    = str.replace(re, arguments[i]);
        }
        
    return str;
    }

    调用方:
    function btnTest_Click() {
        Utils.showWindow(
    "Test.aspx"600400"Import""OnTestCallBack");
    }

    function OnTestCallBack(updated)
    {
        
    if (updated)
        {
            alert(
    "CallBack is true");
        }
    }

    被调用方:
    function btnClose_Click()
    {
        
    var callback = Utils.QueryString("callback");
        
    if (callback != null && window.opener != null && window.opener[callback] != undefined)
        {
            callback 
    = window.opener[callback];
            callback(
    true);
        }
        
        window.close();
    }


    其它功能未完成……
  • 相关阅读:
    MySQL 50条必练查询语句
    Spring MVC
    macaron 根目录默认为templates文件夹,所以如果启动目录同目录下有templates目录,要给它指定另一个文件夹
    table 表格配色
    应用连接数瓶颈解决方案
    idea修改文件的打开方式
    golang template使用
    childnode的after()方法失效问题
    vue双循环或者多循环作用于同一元素时,在外套template标签
    vue遇到组件数据变更了,但是不渲染的问题
  • 原文地址:https://www.cnblogs.com/nonlyli/p/1361187.html
Copyright © 2011-2022 走看看