【问题标题】:Chrome: window.open opens new tab instead of new popup windowChrome:window.open 打开新标签而不是新的弹出窗口
【发布时间】:2017-06-21 05:14:25
【问题描述】:

我有这个sn-p:

HTML

<a href="#" class="option-link" data-url="https://www.google.com">CLICK ME</a>

JS

var popup = undefined;

// Option links toggle
$('.option-link').on('click', function (e) {

    e.preventDefault();

    var url = $(this).data('url');

    if (typeof url !== 'undefined' && url) {

        function __popup_open(link) {
            return window.open(
                link, 
                'same_window',
                'width = 940, height = 620, toolbar = 0, menubar = 0, location = 1, status = 1, scrollbars = 0, resizable = 0, left = 0, top = 0'
            );
        }


        if (typeof popup == 'undefined' || popup.closed) {

            popup = __popup_open(url);

        } else {

            popup.close();
            popup = __popup_open(url);
        }

        popup.focus();
    }

});

在旧版 chrome 从 v58 (58.0.3029.110) 向后运行脚本将给出打开新弹出窗口的正确行为。

但是在我将浏览器更新到 v59 (59.0.3071.104) 后,它不会打开一个弹出窗口,而是打开一个新的浏览器选项卡。

这是浏览器本身的问题吗?或者我的代码中的某些内容使其无法正常工作,前提是此处唯一的更改是浏览器版本。

附言 尝试这个 sn-p 到 mozilla 可以正常工作。

【问题讨论】:

    标签: javascript google-chrome popupwindow


    【解决方案1】:

    Chrome 不再喜欢 location=1 打开弹出窗口。

    将其更改为 location=0location=no 即可。

    从规范 https://www.w3schools.com/jsref/met_win_open.asp

    location yes 仅在 Opera 中使用。

    【讨论】:

    • 您在建议之前尝试过这个吗?因为它在 Chrome 63 中不起作用。
    猜你喜欢
    • 2013-10-06
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多