Как заставить chrome.windows.create отображать окно на одном дисплее?

0

Вопрос

Я создаю расширение chrome, которое открывает всплывающее окно при нажатии кнопки, введенной на страницу. Все работает безупречно, за исключением того факта, что окно отображается на главном экране, а не на том, в котором находится окно браузера, вызывающее всплывающее окно. Как я могу с этим справиться? Использование Mac с пользовательским расположением дисплея, если это уместно. Я бы хотел, чтобы окно просто указывало границы окна, из которого оно возникло.

Насколько я понимаю, это включает в себя некоторые сложные вычисления пикселей дисплеев, но как получить размеры дисплея в этом контексте? Я надеюсь, вы понимаете, о чем я говорю, и что я включил все соответствующие детали. Я включаю свой код для открытия окна ниже:

    chrome.windows.getCurrent((tabWindow) => {
        const popupWidth = 400;
        const popupHeight = 400;
        const leftOffset = (tabWindow.width/2)-(popupWidth/2);
        const topOffset = (tabWindow.height/3)-(popupHeight/2); 

        var infoPopupUrl = "someurl";

        chrome.windows.create(
            {
                'url': chrome.runtime.getURL(infoPopupUrl),
                'type': "popup",
                'width': popupWidth,
                'height': popupHeight,
                'left': Math.round(leftOffset),
                'top': Math.round(topOffset),
                'focused': true
            }
        );
    });

Спасибо всем за помощь.

1

Лучший ответ

0

Эта ссылка: https://stackoverflow.com/a/25830431/3218811

Привело меня к нахождению ответа в screen объект. Есть availLeft и availTop свойства, которые представляют точные соотношения расположения экранов. Работает на Mac, мне нужно протестировать другие платформы, но я полагаю, что это стандарт в Chrome:

        const leftOffset = (tabWindow.width/2)-(popupWidth/2)+screen.availLeft;        
        const topOffset = (tabWindow.height/3)-(popupHeight/2)+screen.availTop; 
2021-11-17 11:16:22

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................