功能场景:是一个文件预览功能,前端调用接口之后,后端返回一个url,前端打开这个url 就可以看到文件的预览内容
问题:
window.open(url)
打开的新窗口显示报错
但是通过直接点击打印出来的url,或者把url字符串放到浏览器窗口,再或者把url字符串放到window.open()里面,都是可以正常打开的
网上找了很多方法,试过了以下几种
1、发请求前先打开一个空白的窗口,在ajax回调函数里拿到url之后再 把url 赋值给 window.location.href
2、试过加一个定时器
3、试过a标签
4、试过在watch监听url的变化,再赋值给 window.location.href
以上办法都不通
实在没办法了,于是找了我们老大
老大说这种情况应该是chrome的安全策略拦截了,referer不是同一个域
最终的解决办法是
成功!
这个写法是为了去掉refer的,javascript:;跳转一个新的页面,而window.name 在此次发现类似于一个容器,对比以下两个效果
如果直接执行以下代码,会跳转到一个空白页面
window.open('javascript:;', '<script>console.log(window.name)<\/script>')
加上window.name,再执行下面的代码,会发现 name 是一个容器,装了写的整个js
window.open('javascript:window.name;', '<script>console.log(window.name)<\/script>')
这里也有一个关于window.name的介绍
再把location打印出来,里面有一个repalce方法,调用这个方法会把当前页面的url替换成目标url
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。