美文网首页我爱编程
手机 window.open

手机 window.open

作者: 滚石_c2a6 | 来源:发表于2018-04-09 13:50 被阅读25次
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

相关文章

网友评论

    本文标题:手机 window.open

    本文链接:https://www.haomeiwen.com/subject/cdnbhftx.html