js 在Ajax响应之后打开新窗口

最近的开发中有一个功能,点击一个链接之后,要判断当前的用户是否登录,没有登录的话,需要弹出一个登录对话框,用户登录之后,再在新的窗口(标签)中打开链接指向的Url。

不多说,直接贴出代码:

$(document).delegate("a", "click", function () {
    var actionUrl = $(this).attr("href");
    var ssoAction = function () { window.open(actionUrl, '_blank'); };
    if (isLogin()) {
        ssoAction();
    } else {
        popup.show({login:function () {
                $.ajax({
                    type: "post",
                    dataType: "json",
                    url: "/Account/Login",
                    data: $("frmLogin").serialize(),
                    //发送方式改为同步,避免弹出页面被浏览器拦截
                    async: false,
                    success: function (oData) {
                        ssoAction();
                    }
                });
        });
    }
    return false;
});
 
重点:需要使用同步提交,使用异步提交,callback里面打开新窗口(标签),会被浏览器认为是恶意行为。

时间: 2024-09-21 04:43:12

js 在Ajax响应之后打开新窗口的相关文章

Ajax请求成功后打开新窗口地址_AJAX相关

废话不多说,关键代码如下所示: jQuery.ajax({ "type":"post", "url":"http://www.baidu.com", "success":function(rel){ if(rel.isSuccess){ window.open(rel.url,"_blank"); } } }); 这个url请求成功后window.open(rel.url,"_

Ajax请求成功后打开新窗口地址

废话不多说,关键代码如下所示: jQuery.ajax({ "type":"post", "url":"http://www.baidu.com", "success":function(rel){ if(rel.isSuccess){ window.open(rel.url,"_blank"); } } }); 这个url请求成功后window.open(rel.url,"_

Ajax请求响应中用window.open打开新窗口被拦截的解决方法_AJAX相关

一.问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是会被浏览器给拦截了,需要用户点下. 二.问题分析 浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了,即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所以被拦截. 说明: 1.如果是在 <a href="javascri

Ajax请求响应中用window.open打开新窗口被拦截的解决方法

一.问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是会被浏览器给拦截了,需要用户点下. 二.问题分析 浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了,即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所以被拦截. 说明: 1.如果是在 <a href="javascri

js使用post 方式打开新窗口

这篇文章主要介绍了js使用post 方式打开新窗口的相关资料,需要的朋友可以参考下 js中一般新打开窗口很简单直接window.open(url);就可以了, 但是由于我希望传递参数到服务端,而且参数看起来很长一串,而且get方式的提交参数长度是有限制的,因此我有以下需求: 1,js中实现post提交 2,返回的页面在新窗口显示 首先我是这么做的: 代码如下: $.ajax({ type: "POST", url: '${contextPath}/analyse/detail.do',

ajax怎么打开新窗口具体如何实现

 本文为大家介绍下ajax如何打开新窗口,下面有段代码,需要的朋友可以了解下  代码如下: var newwindow=window.open('about:blank');  jQuery.ajax({  type: 'POST',  url: 'clickRate.action',  dataType:'json',  data:{  'appId': appId  },  success: function(data){  if (data.success == true) {  neww

js打开新窗口方法整理

 js打开新窗口的方法有很多,本文大致整理了一些,需要的朋友可以参考下 window.location="aaa.aspx"    上面的方法只能在当前页打开,如果要在新的页面打开,最简单的是用以下方法    form.target="_blank";  form.action="aaa.aspx";  form.submit();    window.top.location=url 可以在iframe中的页面在父窗口刷新打开    windo

js防士豆可控制打开新窗口代码

js防士豆可控制打开新窗口代码 <SCRIPT LANGUAGE="JavaScript"> function popupPage(l, t, w, h) { var windowprops = "location=no,scrollbars=no,menubars=no,toolbars=no,resizable=yes" + ",left=" + l + ",top=" + t + ",width=&

JS打开新窗口防止被浏览器阻止的方法_javascript技巧

本文实例讲述了JS打开新窗口防止被浏览器阻止的方法.分享给大家供大家参考.具体分析如下: 用传统的window.open()方式打开新窗口,会被浏览器阻止,那么,我们如何才能让JS打开新窗口不被浏览器阻止呢?其实办法还是有的,这里我们就来分析一下如何解决这个问题 我最近也遇到了这样的问题,所以就把弹出新窗口的方法分享给大家.欢迎大家补充哦... 第一种.使用原生javascript的window.open()方法(大部分情况下会被浏览自阻止) 第二种.模拟表单(form)提交,原理是指定表单的a