为了账号安全,请及时绑定邮箱和手机立即绑定

js操作新开页面会被拦截,如何解决?

js操作新开页面会被拦截,如何解决?

胡说叔叔 2018-11-20 17:13:35
页面上一个按钮,有个onclick事件,点击触发js,发送ajax请求到后台,后台经过一系列判断,返回url到js<a class="a" id="k_id" href="javascript:void(0);" onclick="test($(this),id1,id2);"></a>function test(oElement,id1,id2) {    //发送ajax请求...返回一个url    var url = "ajax请求返回的url";        //js操作将返回的url赋值到页面上的a标签,然后js模拟a标签点击事件    $(oElement).attr("href",url);    $(oElement).removeAttr("onclick");    var id = $(oElement).attr("id");    document.getElementById(id).click();//这里点击a标签        //这样的操作会被浏览器拦截,}求解$(oElement).attr("href",url);$(oElement).removeAttr("onclick");经测试,假如js操作新开页面的动作没有放在ajax的回调中的话这样就不需要js去模拟点击,jquery操作修改了href属性后直接就能够跳转
查看完整描述

1 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

浏览器会判断新开标签是否是用户自身行为(特别是safari) 你的url如果是后台返回 瞬间返回是可以打开的 如果延迟个几百毫秒就会被拦截,以下是我自己的解决办法:

winRef = window.open("", "_blank");


winRef.location = response.url;

点击函数后立即打开新标签,然后再发送请求,后台发挥的url地址赋值给你新开标签的对象的location 就可以了
新开标签的兼容基本就是这个思路

查看完整回答
反对 回复 2018-12-28
  • 1 回答
  • 0 关注
  • 558 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号