【问题集】window.open使用被拦截问题
来源:互联网 发布:win10系统安装mac os 编辑:程序博客网 时间:2024/06/01 09:49
需求:
在调取接口后,将响应内容在新的tab页展示。
实现思路:
在响应回调中通过window.open()方法,打开新的tab。
问题:
因为浏览器拦截导致新tab无法打开。
方案:
1、在网上搜了主要解决方案:
<input type="button" id="btn" value="保存" ng-click="save();" /> 在点击事件中:
a、创建a标签,并触发click事件;
. var a = document.createElement("a"); a.setAttribute("href", url); a.setAttribute("target", "_blank"); document.body.appendChild(a); a.click();
b、创建form表单,触发submit
var f=document.createElement("form"); f.setAttribute("action" , url ); f.setAttribute("method" , 'get' ); f.setAttribute("target" , '_black' ); document.body.appendChild(f) f.submit();
这两种方案在不延时的情况下,是可以重新打开tab的,因为浏览器会认为这是用户的操作。
但是当我将这段代码延时1s执行时,tab就会被浏览器拦截。~~可能浏览器认为是广告吧...
而http请求肯定是有延时的,因此这种方案不可行。于是有了方案2:
2、在点击事件触发时先调用window.open()方法,打开新的tab,然后在响应回调中,设置新打开tab的href。
var new_window = null; $scope.save= function () { new_window = $window.open(); commonService.sendRequest(Api.choosePayChannel, 'POST', { orderNo: $scope.orderNo, payType: $scope.currentPlatform }).then(function (resp) { var respData = resp.data; if (respData) { if (respData.type == 'html') { new_window.document.write(respData.result); } else if (respData.type == 'img') { var url = $state.href('smsPay', {codeUrl: respData.result, orderId: $scope.orderNo}); new_window.location.href = window.location.origin+window.location.pathname+url; } } }, function (error) { new_window.close(); commonService.showErrorTip(error); }); };
阅读全文
0 0
- 【问题集】window.open使用被拦截问题
- window.open()被拦截问题
- window.open()被浏览器拦截的问题
- window.open被拦截问题及解决方法
- 解决window.open被浏览器拦截的问题
- 处理window.open弹出框被拦截的问题
- window.open关于浏览器拦截问题
- window.open()被拦截
- window.open关于浏览器拦截问题分析及解决方法
- js window.open新打开窗口总是被浏览器拦截的问题
- window.open不被拦截
- window.open被浏览器拦截
- window.open _self 问题
- window.open()的问题
- JavaScript中使用window.open被拦截解决办法
- window.open打开H5页面支付和微信公众号支付的被拦截的问题
- 异步请求后根据结果window.open方式打开新页面,浏览器拦截弹窗问题
- chrome拦截window.open弹窗问题的两种解决方式
- 自制编程语言CXScript(三) 如何实现if语句、else语句并实现分支跳转
- 京东三级列表页持续架构优化—前端优化实践
- UVA 1584
- 运行yum时出现/var/run/yum.pid已被锁定,PID为xxxx的另一个程序正在运行的问题解决
- 音视频 图像处理
- 【问题集】window.open使用被拦截问题
- POJ 3221:Diamond Puzzle(六数码 反向bfs)
- CSS 关闭按钮实现
- HDU
- 使用浏览器在JavaScript程序中的错误与调试
- 没有脚本的JSP
- okhttp3使用总结
- Linux下profile和bashrc四种的区别
- javascript翻转棋、javascript写的小游戏