您的位置:首页 > Web前端 > JavaScript

JS问题解决(一)

2016-07-08 18:23 337 查看
       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;
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息