ajax回调打开新窗体防止浏览器拦截

function click_fun(){
     window.open("www.baidu.com");//能打开
    $.ajax({
        'url': '${pageContext.request.contextPath}/activity/savePrizes.htm',
        'type': 'post',
        'dataType': 'json',
        'data': data,
        success: function (data) {
            window.open("www.baidu.com");//被拦截
        },
        error:function(){

        }
    });
}

分析:

打开新窗体只能在点击事件内触发,点击事件内的回调函数内打开窗体会被拦截,浏览器会认为是广告弹窗之类的代码

解决1:

function click_fun_new(){
    var tempwindow=window.open();//先打开临时窗体,由于是点击事件内触发,不会被拦截
    $.ajax({
        'url': '${pageContext.request.contextPath}/activity/savePrizes.htm',
        'type': 'post',
        'dataType': 'json',
        'data': data,
        success: function (data) {
            tempwindow.location = "www.baidu.com";//当回调的时候更改临时窗体的路径
        },
        error:function(){
            tempwindow.close();//回调发现无需打开窗体时可以关闭之前的临时窗体
        }
    });
}

解决2:

function click_fun_new(){
    var flag = false;
    $.ajax({
        'url': '${pageContext.request.contextPath}/activity/savePrizes.htm',
        'type': 'post',
        'dataType': 'json',
        'data': data,
        'async':false,//同步请求
        success: function (data) {
            $("#a").attr("href","www.baidu.com");//当回调的时候更改页面上或创建的某个a标签的href
            flag = true;//更改标志
        },
        error:function(){

        }
    });
    if(flag){
        $("#a").click();//href属性更改后模拟点击
    }
}
时间: 2024-11-11 21:32:26

ajax回调打开新窗体防止浏览器拦截的相关文章

ajax回调打开新窗体被浏览器拦截

1 function click_fun(){ 2 3 $.ajax({ 4 'url': '${pageContext.request.contextPath}/action/', 5 'type': 'post', 6 'dataType': 'json', 7 'data': data, 8 success: function (data) { 9 window.open("www.baidu.com");//被拦截 10 }, 11 error:function(){ 12 1

Ajax提交打开新窗口,浏览器拦截处理

//主要是添加同步处理 $.ajax({ url: "ashx/OrderHander.ashx?action=CheckRepeat", data: { "OrderId": data.OrderNo }, dataType: "json", async:false, type: "post", success: function (data) { if (data == "1") { window.lo

window.open打开新窗口被浏览器拦截的处理方法

一般我们在打开页面的时候, 最常用的就是用<a>标签,如果是新窗口打开就价格target="_blank"属性就可以了, 如果只是刷新当前页面就用window.location.reload(), 在某些特殊情况下也要用到另外一种新窗口打开的方法,就是window.open(),这个方法有一个问题就是会被基本所有的浏览器所拦截,要收到点击确认打开才可以,这样的体验可以说是非常不友好的~~ 感觉像一个有病毒的程序~~ 所以我们如果一定要用这个方法,但是又不想其被浏览器拦截,

Flash打开新窗口 被浏览器拦截 navigateToURL被拦截

众所周知,打开新窗口以前经常被用作弹出广告用,而随着浏览器发展,现在估计除了ie6之外,基本都有广告拦截功能,最基本就是拦截这种非人为的弹出新窗口.我对js研究不深,我所了解就是,必须是用户操作的处理过程中,用window.open才能顺利通过浏览器的拦截检查.同样地,在Flash中,也有很多类似的安全限制,必须是用户操作才能触发一些危险代码的执行(例如,打开文件选择框).  今天,在处理XXXX的时候,点击flash的按钮时,无法正常弹出新窗口.于是,今天专门好好研究一下这个问题.正好,前几天

Response.Redirect 打开新窗体的两种方法

普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location='http://dotnet.aspx.cc';</script>") 方法外,是不能在新窗体打开所指定的  URL 地址的.可是,假设细致分析一下,假设设置 form 元素的 target 属性,还是有办法打开新窗体的.以下就是能够採用的两种方法. 方法一:在server端设置 targ

对话框控件 MessageBox.Show()用法补充 打开新窗体的3中模式

(一)对话框控件 1.fontcolor 字体设置 属性:showcolor 可以调节字体颜色 showApply 控制显示应用按钮 例:设置一个文本框,点击按钮,文本框中的颜色字体发生改变 DialogResult dr = fontDialog1.ShowDialog(); if (dr == DialogResult.OK) { //设置文本框中的字体属性 richTextBox1.Font = fontDialog1.Font; //设置文本框中字体的颜色 richTextBox1.Fo

ajax请求后弹开新页面被浏览器拦截

window.open()我想应该很多人都不陌生吧,它可以实现除用a标签以外来实现打开新窗口! 最近开发项目用到时,却遇到了麻烦,本来好好的弹出窗口,结果被浏览器无情的给拦截了! 代码如下: $.getJSON(URL,data,function(data,state){ if(state=='success'){ window.open('http://www.cnblogs.com/garfieldzhong/'); }else{ alert('请求失败!'); } }) 这要手动允许弹出窗

ajax请求弹出窗口被浏览器拦截的问题

var w = window.open(); function ck(){ $.ajax({ url : '#', data:#, success : function(data1){ w.location = "#"; } }); } 记得将window设置在异步请求外面,也不用设置同步,就能实现不被浏览器拦截.

android安卓开发基础小笔记,添加按钮事件,打开新窗体,窗体传值,回传

给一个按钮添加onclick事件 //获取按钮对象 Button Aiyo = (Button)findViewById(R.id.button1); Aiyo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) {//tv.setText("woceshi"); //弹出提示 Toast.makeText(getApplicationContext(), '你好', Toas