在Chrome扩展程序中,是否可以可靠地将扩展程序的弹出窗口移出屏幕?

时间:2020-06-19 03:03:46

标签: javascript google-chrome google-chrome-extension

按下Chrome扩展程序的键盘快捷键后,我会使用chrome.windows.create({ type: "popup", ... })创建一个弹出窗口。为了使扩展程序尽可能地响应,我想通过将其移出屏幕来“隐藏”该窗口。这样,下次调用扩展程序的键盘快捷方式时,我可以简单地将屏幕上的窗口移动到“显示”它。这样可以避免操作系统的新窗口动画,绘制浏览器镶边,加载页面等。

我使用chrome.windows.update(<windowId>, { left: 10000, top: 10000 })将窗口移动到屏幕外的像素位置,然后将其在屏幕上移动以显示它。

在Windows 10上,当将“显示”设置中的UI缩放比例设置为100%时,这可以完美地工作。不幸的是,如果将UI缩放为150%,则将窗口移出屏幕是行不通的(尽管有时会这样做)。如果我将窗口移至{ left: 10000, top: 10000 },则该窗口将最终出现在屏幕的右下角。如果我将其移至{ left: -10000, top: -10000 },它将最终显示在左上方。

在macOS 10.15上,窗口大部分移至屏幕外,但可见一小部分。因此,看来我遇到了一些特定于操作系统的行为/错误。

有没有办法可靠地在屏幕外移动/隐藏弹出窗口?

1 个答案:

答案 0 :(得分:0)

没有内置的扩展API。

解决方法1:将辅助窗口重新放置在主窗口下。

解决方法2:将辅助窗口的state 'minimized' How about the :nth-child(3n+3)? (3 x 0) + 3 = 3 = 3rd Element (3 x 1) + 3 = 6 = 6th Element (3 x 2) + 3 = 9 = 9th Element etc. How about the :nth-child(2n+1)? (2 x 0) + 1 = 1 = 1st Element (2 x 1) + 1 = 3 = 3rd Element (2 x 2) + 1 = 5 = 5th Element etc. # 3, 6, 9 element .container .gallery-container:nth-child(3n+3) .image img{ border-top-left-radius: 10px; border-bottom-left-radius: 10px; } # 1, 3, 5 element .container .gallery-container:nth-child(2n+1) .image img{ border-top-left-radius: 10px; border-bottom-left-radius: 10px; } 最小化。

解决方法3:使用setting运行单独的实用程序(您可以使用在所有平台上运行的任何语言,例如node.js编写),该实用程序将使用低级OS方法直接操作窗口可见性。

解决方法4:将用户界面作为DOM + ShadowDOM插入页面内。