前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ajax返回url,window.open(url)错误

ajax返回url,window.open(url)错误

原创
作者头像
xyzzz
修改2021-07-16 18:06:43
2.3K0
修改2021-07-16 18:06:43
举报
文章被收录于专栏:前端学习。前端学习。

功能场景:是一个文件预览功能,前端调用接口之后,后端返回一个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 在此次发现类似于一个容器,对比以下两个效果

如果直接执行以下代码,会跳转到一个空白页面

代码语言:javascript
复制
window.open('javascript:;', '<script>console.log(window.name)<\/script>')

加上window.name,再执行下面的代码,会发现 name 是一个容器,装了写的整个js

代码语言:javascript
复制
window.open('javascript:window.name;', '<script>console.log(window.name)<\/script>')

这里也有一个关于window.name的介绍

再把location打印出来,里面有一个repalce方法,调用这个方法会把当前页面的url替换成目标url

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档