有没有办法在多个显示器/监视器上控制浏览器大小和位置?

时间:2014-02-05 14:08:34

标签: javascript google-chrome browser multiple-monitors

前言

首先,我非常清楚webapps不应该摆弄窗口大小或位置。经历了很多类似的SO问题和论坛帖子。

但这是一种特殊情况,浏览器只是在受控环境中的几台特定机器上运行应用程序的平台。

任务

该应用应管理多个显示器的窗口。 (最多5个)

到目前为止我一直在尝试

  1. 搜索获取有关主机系统显示信息的信息的方法,但window.screen对象仅报告窗口当前所在的显示属性(或被视为打开,如果它位于一半)< / LI>
  2. 使用标记window.moveTo尝试window.open"left=123,top=123",但它们始终仅限于当前显示
  3. 使用标记window.resize尝试window.open"height=123,width=123",但与moveTo一样,它们仅限于当前显示。
  4. 问题

    如何在多显示器环境中使用我的应用程序(没有手动窗口定位)所有可用空间?

    方案

    想想看,我有两台投影机正确对齐,并希望能够实现:

    • 每个项目投影不同的东西(每个投影仪投影自己的浏览器窗口)
    • 在两台投影机之间无缝投影应用程序(可能是全屏)

    可能/应该有一个运行主窗口布局逻辑的窗口

    注意

    我可以再次使用任何flagsappkiosk模式:我们将应用部署到目标环境。

    浏览器选项是Windows平台上的Chrome(首选),Chromium和Firefox(因为我们将在5个显示器上使用特殊显卡)。

    后备解决方案

    在可用的显示内手动拉伸窗口,并在此主iframe内的window s内运行应用。

    缺点:单个进程正在运行所有内容,因此如果应用程序在框架内中断,则会破坏所有内容。

    后记

    此问题的解决方案也是一个很好的帮助:Windows / Chrome / ATI / Browser fullscreen across multiple monitors

5 个答案:

答案 0 :(得分:3)

使用chrome / firefox扩展,可以访问特定于窗口/选项卡的API。 要么将整个应用程序嵌入到扩展中,要么通过消息与扩展程序通信(chrome,firefox上有一个等价物)。

Chrome中的

Support experimental

答案 1 :(得分:1)

如果在Internet选项/安全性/自定义下检查权限“允许脚本启动的窗口没有大小或位置限制”,则可以使用window.moveTo(-1000,100)将弹出窗口移动到IE中的第二个监视器水平。

如果您只连接了一台显示器,它会将窗口移动到主显示器的边缘。我在Chrome中找不到办法,但似乎没有相同的安全选项。

答案 2 :(得分:1)

尝试使用chrome.windows API与浏览器窗口进行交互。您可以使用此API在浏览器中创建,修改和重新排列窗口。

https://developer.chrome.com/extensions/windows

它甚至适用于夜视仪。

答案 3 :(得分:0)

我不认为这是可能的。 出于安全原因,浏览器确实限制了JavaScript的权限。 也许你可以手动(当然是在JavaScript中)将x和y位置设置在远离屏幕的位置,以便它出现在另一个屏幕上,但这不是一种巧妙的方式。

据我所知,您有两种选择:

  1. 为每个屏幕创建不同的页面,并且每次都单独打开它们。
  2. 使用按钮创建所有窗口,并让用户将它们拖动到相应的屏幕。当用户单击该按钮时,以全屏/信息亭模式打开窗口并加载内容。但是我不知道如果你在全屏模式的某个地方激活另一个屏幕会发生什么。它可能会使全屏模式失效并关闭。
  3. 据我所知,这是浏览器中唯一可以使用不同窗口的方法。

答案 4 :(得分:0)

另一种可能的解决方案是使用win32来调整尺寸和尺寸。定位窗口。

如问题解决方案中所示:Chrome Packaged App and Dual Monitors(此处没有代码,仅供参考)