首页 > 解决方案 > Firefox webextension window.resizeTo 不会为 browser.windows.create 创建的页面调整大小

问题描述

我正在创建一个带有弹出窗口的 F​​irefox webextension,该弹出窗口需要根据页面呈现后的内容以编程方式调整大小。

我有以下代码使用browser.windows.create创建一个弹出窗口:

browser.windows.create({
    type    : 'popup',
    url     : `page.html`,
});

在内部page.html,渲染后,我正在尝试使用以下方法调整大小:

window.resizeTo(<width>,<height>);

然而,这并没有做任何事情。从window.resizeTo文档,它的脚注说:

注意:不能调整不是由 window.open() 创建的窗口或选项卡的大小。当窗口有多个选项卡时,也无法调整大小。

我猜这是由于第一个原因,因为窗口不是使用创建的window.open(),所以它不能调整大小。有替代方案吗?我试图避免使用browser.windows.update,它增加了复杂性,因为我必须发送带有尺寸的消息。有什么我做错了或有任何建议如何处理吗?

标签: javascriptfirefox-addon-webextensions

解决方案


page.html是一个扩展页面(就像 browser_action 弹出窗口或选项页面一样),因此它可以访问browser并且您可以browser.windows.update像现在一样直接window.resizeTo调用,无需消息传递。

browser.windows.update(browser.windows.WINDOW_ID_CURRENT, {
  width: 500,
  height: 500,
});

推荐阅读