产品提了一个简单的需求,就是想要重新打开一个界面。因为这里没有回退动作。
window.location.href :在当前界面渲染新界面。
window.open:新建一个界面并渲染新界面。
很明显,我用了window.open,然而
我这是在ajax回调函数里的,直接被拦截。
然后我就想到了用a标签啊,让浏览器觉得是用户自己创建的,跳过安全问题。
function newWin(url, id) { var a = document.createElement(‘a‘); a.setAttribute(‘href‘, url); a.setAttribute(‘target‘, ‘_blank‘); a.setAttribute(‘id‘, id); // 防止反复添加 if(!document.getElementById(id)) { document.body.appendChild(a); } a.click();
} 复制代码
这是百度来的,然而并不行,因为是ajax回调啊。有人跟我说写在回调外面呗,我呵呵!
然后,在跳转button那个函数里面一开始写:
var newWin = window.open(‘你的要跳转的界面’)复制代码
然后在回调成功函数success:函数里面写,
newWin.location.href = '你的要跳转的界面';复制代码
感觉就是跳过回调,一开始就打开了这个界面,然后只是再跳过去。有人会觉得这个会不会体验不好,你可以在window.open时打开链接时那个url,给个默认界面。不过,不用担心,这基本是无缝切换的,没有默认界面,用户也感觉不到。
如果后台能重定向就更好了,没前端啥事。
(但是我这里是websocket,这样做有点bug 会有undefined,因为数据还没拿到,但修复了。其他情况应该也没问题。)