JS问题解决(一)

       1.为了解决当登录失效之后,这种嵌套的效果


       可以使用如下的代码

if(window.top!=window){
	window.top.location.href=document.location.href;
}

       就是判断当前窗口是不是顶级窗口,不是的话就在顶级窗口打开连接! 

       这段代码的作用是为了防止当前页面被其它网站用iframe非法引用。它判断自己所在的窗口是否为顶层窗口,如果不是则将顶层窗口地址替换为自己页面的地址。


2.window.open()打不开链接,无法跳出新页面的问题.

       可以有两种解决方式.1.将ajax的异步改为同步;2.就是在ajax执行之前,用window.open()打开一个新的窗口,然后在ajax执行完之后,再修改新窗口的地址,即可.

       window.open()操作,若是用户主动操作,如点击一个链接地址,弹出一个新页面,是不会被阻止的;一般被阻止,都不是用户主动发起的,比如点击一个click事件,然后处理了N多业务之后,其中有一个ajax异步方式执行的,再用widonw.open弹出一个新页面,就会被认为不是用户主动发起的,而是js代码自己发起的.所以可以将ajax改为同步的.加上async: false这句设置即可.参考:浏览器阻止新窗口(window.open或新窗的form提交)

 function windowOpen() {
			 //其他操作
			$.ajax({
				url:ctx+"/api/h5url/url.do",
				data:{
				},
				async: false,
				type:"post",
				dataType:"json",
				success:function(data) {
		    		//跳转到新页面(data是一个url)
					window.open(data);
				}
			});

       第二种方式,在windowOpen函数最上面,打开任意一个地址,然后在ajax中修改.参考:js实现window.open不被拦截的解决方法汇总

 function windowOpen() {
			var newTab=window.open('about:blank');
			 //其他操作
			$.ajax({
				url:ctx+"/api/h5url/url.do",
				data:{
				},
				type:"post",
				dataType:"json",
				success:function(data) {
		    		//跳转到新页面
					newTab.location.href=data;
				}
			});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值