var link = 'https://www.instagram.com/accounts/login/?force_classic_login=&client_id=CLIENT-ID&next=/oauth/authorize/%3Fclient_id%3DCLIENT-ID%26redirect_uri%3DREDIRECT-URI%26response_type%3Dtoken';
$scope.re = function () {
window.open(link, '_self');
}; //手机端可以响应window.open
window.onload = function () {
window.open(link, '_self');
}; //ios safari不能触发window.open,可能需要用户点击,android模拟器可以
把_self 改为_blank, pc端浏览器会阻止弹出新窗口。手机端都打不开
document.getElementById('foz').
addEventListener('click', function (evt) {
var a = document.createElement('a');
a.setAttribute('href', link);
// a.setAttribute('target', '_blank');
a.click();
// var dispatch = document.createEvent('HTMLEvents');
// dispatch.initEvent('click', true, true);
// a.dispatchEvent(dispatch);
}, false);
如果safari什么也没弹出有可能设置 safari阻止弹出式窗口
I using trying to use window.open in the success method for a jquery $.ajax call when async is set to true. Safari would ignore window.open. Changing jquery $.ajax call to async: false allowed window.open to work
参考:https://stackoverflow.com/questions/20696041/window-openurl-blank-not-working-on-imac-safari
最近遇到一个问题,safari浏览器不支持window.open直接打开新窗口,经过测试,发现一个问题:
当window.open为用户触发事件内部或者加载时,不会被拦截,一旦将弹出代码移动到ajax或者一段异步代码内部,马上就出现被拦截的表现了。
解决办法:
1、在ajax回调函数里面使用window.open(直接使用window.open属于浏览器行为,所以被阻止打开新窗口);
2、苹果系统设置,偏好设置->安全性,去掉阻止弹窗的复选框就ok了。
参考:https://blog.csdn.net/illusion_you/article/details/79131765
网友评论