js新打开页面

            var a = document.createElement("a");
            a.setAttribute("href", href);
            a.setAttribute("target", "HTEPreview");
            document.body.appendChild(a);

            var e = document.createEvent('MouseEvent');
            e.initEvent('click', false, false);
            setTimeout(a.dispatchEvent(e), 2000);

 一般来讲,这种方法比window。open不容易被拦截

 

但是对于ajax的异步提交,在success的方法里面,浏览器会拦截window.open,同时对于页面元素的click和submit也会拦截。

方法一:     若是点击发送ajax触发方法,这里要强调一下不管是自动发送ajax还是手动发送ajax成功之后调用的方法内部用Window.open()或者$(form).submit()都可能会被认为是广告。下面我的解决方法是,手动同步发送ajax,之后将ajax的值赋予变量,再在ajax方法之后调用Window.open()或者$(form).submit()就可以避免这种问题。

 

方法二:但是对于mvc表单提交,很难设置同步异步,方法是在ajax执行之前先打开一个新窗口,这时候是同步的,所以不会有问题,然后在异步调用成功后使用location.href将其指向新的url,如果失败则将该窗口关闭。

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

 

参考资料:http://blog.csdn.net/yanhandle/article/details/8486638

 

posted @ 2016-05-26 16:13  寂寞之砂  阅读(995)  评论(0编辑  收藏  举报