• javascrpt 代码


    一、window.open关闭子页面时刷新父页面

    window.opener.location.reload();

    window.opener=null;window.close();

    二、AJAX返回后window.open不被阻挡

    1.可以把异步变同步async: false

    2.异步下处理方法

    var newwindow=window.open("about:blank");  
    window.focus();  
    $.ajax({  
        url:form.attr('action'),  
        data:form.serialize(),  
        dataType: 'json',  
    }).done(function(o){  
        if(o.success){  
            if(o.data){  
                newwindow.location.href="http://www.zgxrw.com";  
                newwindow.focus();  
            }else{  
                newwindow.close();  
            }  
        }else{  
            newwindow.close();  
        }  
    }).fail(function(){newwindow.close();});  
    

      

      但是这种方法带来一个问题,就是当失败后,会先打开一个窗口,然后再关闭,虽然一闪而过,但是对用户总是一个困扰,相对来说还不如将ajax改成同步,毕竟现在的互联网的访问速度,不至于会将浏览器锁住太长时间。

     或者

    方法1:
    <input type="button" class="preview" value="预览"/>
    $('.preview').live('click', function(){
      var w = window.open();//发请求之前打开一个空页面
      $.ajax({..., success:function(msg){
        setTimeout(function(){w.location='http://www.baidu.com';}, 0);//0秒后给新窗口的localtion赋值
      }});
    });
    方法2:
    <input type="button" value="预览" onclick="if(preview()){window.open('http://www.baidu.com');}"/>
    function preview(){
      var bol = false;
      $.ajax({async:false,...,success:function(msg){
        if (msg == 1) {
          bol = true;
        } else {
          bol = false;
        }
      }});
      return bol;
    }

  • 相关阅读:
    【LeetCode-动态规划】编辑距离
    【LeetCode-栈】计算器
    【LeetCode-栈】字符串解码
    【LeetCode-数组】缺失的第一个正数
    【LeetCode-查找】寻找重复数
    【LeetCode-堆】丑数
    【LeetCode-堆】数据流中的第K大元素
    【LeetCode-排序】根据身高重建队列
    立项与启动
    JS中match方法探究
  • 原文地址:https://www.cnblogs.com/terrylin/p/3186092.html
Copyright © 2020-2023  润新知