FirefoxWeb扩展API用于多个监视器和全屏 Firefox Quantum最终于2017年11月14日发布。引用此链接: 过去,您可以使用三个不同的系统之一开发Firefox扩展:XUL/XPCOM叠加层,Bootstr ...

问题描述 投票:0回答:1

使用Firefox 57量子和Web扩展API,我想制作一个能够在多个屏幕上运行的扩展程序。此扩展名将用于显示多个屏幕仪表板。 关于它的想法是如此简单。如果检测到两个或多个屏幕,则每个Firefox启动,然后在全屏模式下为每个监视器打开一个新窗口。我可以全屏进行全屏,但是面临在另一个显示器上打开的问题,并检测附加了多少监视器。

使用
browser.windows

api创建另一个新选项卡,以下是一些摘要代码:

getCurrentWindow().then((currentWindow) => { let mirror1 = browser.windows.create({ url: "http://172.20.12.211:8080/ivi", state: "fullscreen" }); mirror1.then(() => { browser.windows.remove(currentWindow.id); var updateInfo = { state: "fullscreen" }; let mirror2 = browser.windows.create({ url: "http://172.20.12.211:8080/ivi", state: "fullscreen" }); mirror2.then((nextWindow) => { var updateInfo = { left: 1366 }; browser.windows.update(nextWindow.id, updateInfo); }); }); });

显然,我上面的解决方案对两个显示器进行了硬编码,并将

left

参数设置为1366 PX,因此,如果屏幕分辨率不等于1366x768,则该解决方案将无法正常工作。

中,是否有任何API或更好的方法来检测附着多少监视器并检查其分辨率? Web扩展API是否具有用于检测多个监视器和分辨率值的功能?如果没有,有什么可能的解决方法?


    

没有容易可用的扩展API可以回答您的问题,但是有足够的构建块可以另一种方式回答问题。

当前窗口相对于显示器的位置可通过:


window.screenX

-
javascript firefox multiple-monitors firefox-addon-webextensions
1个回答
4
投票

window.screenY

-

screen.height

-
    Https://developer.mozilla.org/en-us/docs/web/api/screen/height
  • 
    FireFox甚至提供了相对于所有其他显示的读取当前显示的位置的能力。如果您有两个显示器,并且当前屏幕实际上在另一个屏幕的右侧,则non-standardfirefox-only
  • prouth属性具有非零值。
  • screen.left -Https://developer.mozilla.org/en-us/docs/web/api/screen/left

screen.left -Https://developer.mozilla.org/en-us/docs/web/api/screen/top


注:当firefox打开

{ "name": "Display info", "version": "1", "manifest_version": 2, "background": { "scripts": ["background.js"] }, "browser_action": { "default_title": "Open popup to display info" } }


background.js

chrome.browserAction.onClicked.addListener(function() { chrome.windows.create({ url: chrome.runtime.getURL('/display.html'), }); });

display.html

<meta charset="utf-8">
<body style="white-space:pre">
<script src="display.js"></script>

display.js

上面的API不是扩展特定的。您还可以运行以下片段并将窗口移动以查看值。

setInterval(function() {
    document.body.textContent =
        '\nWindow offset: ' + window.screenX + ',' + window.screenY +
        '\nScreen size  : ' + screen.width + 'x' + screen.height +
        '\nScreen offset: ' + screen.left + ',' + screen.top;
    chrome.windows.get(chrome.windows.WINDOW_ID_CURRENT, function(win) {
        document.body.insertAdjacentText('beforeend',
            '\nExtension window offset : ' + win.left + ',' + win.top);
    });
}, 200);


    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.