[Javascript] 開新視窗、開新分頁不被阻擋彈出式視窗

2017-12-08

算是一個小技巧,最近因為同事在測試剛好討論一下,查了很多網站,作法不一而且很多測試都不成功了,所以想說就筆記一下,目前可看到可用的作法。
Image 368

首先,我講一下使用案例,這案例是,我得先透過 ajax 從 data.js 拿到資料,之後我得開新視窗這後就會彈出

Image 369

Code :

        function newwin() {
            window.open('https://msdn.microsoft.com/zh-tw/', '_blank');
        }


        $('#btn1').click(function () {
            $.ajax({
                url: '/data.js',
                dataType: 'json',
                success: function (data) {
                    newwin();
                }
            });
        });

接下來是一個修正,在從data.js 取回回來後,之後再呼叫一個 newsite.js 然後, newsite.js 裡面就是很單純一個網址,所以透過 ajax 呼叫完 data.js 後,之後再呼叫 newsite.js 並且打開 newsite.js 的網址並且開新分頁。


        $('#btn2').click(function () {
            //一定要放在呼叫ajax 之前
            var w = window.open('');
            $.ajax({
                url: '/data.js',
                dataType: 'json',
                success: function (data) {
                   
                    $.ajax({
                        url: '/newsite.js',
                        dataType: 'text',
                        success: function (data) {
                            w.location = data;
                        }
                    });
                }
            });
            
        });

這樣很神奇的,就可以開新分頁成功,我算是簡化中間的操作,讓之後要用的人可以快速了解,有需要的話就自行取用吧。

source sample : https://github.com/donma/opnenewlinksample

reference : http://theandystratton.com/2012/how-to-bypass-google-chromes-javascript-popup-blocker


當麻許的超技八 2014 | Donma Hsu Design.