Javascript window.open,chrome在双屏幕设置中将窗口恢复为调用窗口屏幕

Javascript window.open,chrome在双屏幕设置中将窗口恢复为调用窗口屏幕,javascript,html,Javascript,Html,当使用API窗口打开窗口时,Chrome的行为与IE和FF不同。在双屏幕设置([screen1][screen2])中,打开并将左位置指定到右屏幕/监视器上的某个位置 当调用屏幕位于右监视器上时也会发生同样的情况,左位置总是在第二个监视器中开始,尽管在打开属性screenX后正确报告屏幕宽度,而不是0(将此窗口放在第二个监视器中,并在下面的jsfiddle中设置left=0,以测试这一点) Chrome似乎总是将弹出位置捕捉到调用窗口屏幕 铬41.0.2272.76米 FF 36.0.1 IE

当使用API
窗口打开窗口时,Chrome的行为与IE和FF不同。在双屏幕设置([screen1][screen2])中,打开
并将左位置指定到右屏幕/监视器上的某个位置

当调用屏幕位于右监视器上时也会发生同样的情况,左位置总是在第二个监视器中开始,尽管在打开属性
screenX
后正确报告屏幕宽度,而不是0(将此窗口放在第二个监视器中,并在下面的jsfiddle中设置
left=0
,以测试这一点)

Chrome似乎总是将弹出位置捕捉到调用窗口屏幕

  • 铬41.0.2272.76米
  • FF 36.0.1
  • IE 11.0.9600.17633
你可以用这把小小提琴试试

当然,这是一种调整,以防止windows最终脱离屏幕,而不考虑第二个屏幕。缺陷有办法解决这个问题吗


在真实的用例中,用户在第二个屏幕上放置一个窗口,期望它在下一个会话(可能明天)中结束。位置保存在本地存储中。

我通过一些搜索找到了它,并根据您的示例对其进行了修改

$(function()
{
    $('#btnOpen').click(function(){
    // change 2100 put window on right screen
    var windowSize = {
      width: 500,
      height: 500,
    };
    var windowLocation = {
        left:  (window.screen.availLeft + (window.screen.availWidth / 2)) - (windowSize.width / 2),
        top: (window.screen.availTop + (window.screen.availHeight / 2)) - (windowSize.height / 2)
    };

    window.open('about:blank', null, 'width=' + windowSize.width + ', height=' + windowSize.height + ', left=' + windowLocation.left + ', top=' + windowLocation.top)

    });
});
资料来源是: