【问题标题】:How can I make a chrome packaged app which runs in fullscreen at startup?如何制作一个在启动时全屏运行的 chrome 打包应用程序?
【发布时间】:2013-03-16 16:45:55
【问题描述】:

目前似乎只能通过用户操作(鼠标/键盘事件)激活全屏功能。有没有办法绕过这个?

【问题讨论】:

    标签: google-chrome-app


    【解决方案1】:

    现在,您可以在主 .js 中添加 state:"fullscreen" 属性:

    chrome.app.runtime.onLaunched.addListener(
        function() {
            chrome.app.window.create('index.html',
                {
                    state: "fullscreen",
                }
            );
        }
    );
    

    确保不添加 resizable: falsebounds 属性,并在 manifest.json 上添加 "fullscreen" 权限。

    {
        ...
        "permissions": [
            ...
            "fullscreen"
        ]
    }
    

    【讨论】:

    • 如果我想阻止它在启动时全屏运行怎么办?在 Mac 上,如果我在全屏时关闭应用程序,它将在下次运行时全屏启动。我怎样才能防止这种情况? chrome.app.window.create( 'view/viewer.html', { id: 'presentation-viewer-'+pres_id, bounds: {width: 1024, height: 768}, "resizable": false, state: "maximized" }
    • @Devrim 请创建另一个问题,因为您的情况不同。我现在帮不了你,但我相信社区会的。 :D
    • 我有,但社区似乎已经没有想法了:D
    • @Devrim 请在此处使用链接发表评论,我会尽快为您提供帮助;)
    【解决方案2】:

    您可以使用需要用户操作的 HTML5 全屏 API:

    button.addEventListener('click', function() {
      document.body.webkitRequestFullscreen();
    });
    

    或使用 AppWindow 对象的更“app-y”方式,不需要用户操作:

    chrome.app.window.current().fullscreen();
    

    两者都需要manifest.json 中的"fullscreen" 权限。

    【讨论】:

    【解决方案3】:

    我已经用下面的代码让它工作了

    chrome.app.runtime.onLaunched.addListener(function() {
        chrome.app.window.create('index.html', {
        'width': 1024,
        'height': 768
    },
    function(win) {
        win.maximize();
    });
    });
    

    【讨论】:

    • manifest.json中将“全屏”添加到“权限”数组后,将其设为win.fullscreen()
    【解决方案4】:

    查看https://plus.google.com/100132233764003563318/posts/2SuD7MVd8mG 指的是最近登陆的更改列表https://chromiumcodereview.appspot.com/12205002。您可以从以下任一来源提取示例代码:

    document.body.addEventListener('click', function() {
      document.body.webkitRequestFullscreen();
    });
    

    确保您在清单中请求“全屏”权限,并且您正在测试足够新的 Chrome 版本(测试版通道现在应该具有此功能,而开发人员肯定有)。

    您的问题专门针对打包应用程序,但如果阅读此答案的人错过了这个,这仅适用于 Chrome 打包应用程序

    【讨论】:

    • 这应该在 Windows 上运行的应用程序中工作吗?我无法让我的应用程序全屏显示。调用 document.body.webkitRequestFullscreen() 没有任何影响。
    【解决方案5】:

    main.js

    chrome.app.runtime.onLaunched.addListener(function() {
      chrome.app.window.create('index.html',{},function(window) {
        window.fullscreen();
      });
    });
    

    manifest.json

    {
      ...
      "manifest_version": 2,
      "minimum_chrome_version": "23",
      "app": {
        "background": {
          "scripts": ["main.js"]
        }
      },
      "permissions": ["fullscreen"]
    }
    

    【讨论】:

      【解决方案6】:

      编辑:根据 BeardFist 的评论,我最初的回答在两个方面都是错误的。您可以在 Chrome 扩展程序(标记为)上执行此操作,但可能无法在打包的应用程序上执行此操作。

      对于扩展,您可以使用 state:"fullscreen" 选项将其设为全屏,该选项可与chrome.window.update 一起应用。下面的代码通过chrome.windows.createchrome.window.update 链接窗口的创建。在我的实验中,您无法直接通过创建窗口来设置全屏状态。

      chrome.windows.create(
        {url:"PATH/TO/POPUP"}, 
          function(newWindow) {
              chrome.windows.update(newWindow.id, {state:"fullscreen"})
      });
      

      【讨论】:

      • 您绝对可以使用 {state:"fullscreen"} 从扩展程序触发全屏,但您不能使用打包的应用程序来做到这一点。事实上,您根本无法访问chome.windows,所以这也行不通。
      • 谢谢,问题的标签让我相信他们问的是浏览器扩展。
      • 此问题不再标记为“Google-Chrome-Extension”
      • 抱歉打错了标签(我以为这两个标签都使用了)。还是不错的发现!但是仍然很奇怪,您似乎能够对打包的应用程序做的比扩展少。也许我应该换。
      • 不用担心 :)。它们有不同的用例,因此您切换可能是有意义的。详情?
      猜你喜欢
      • 2013-11-22
      • 2013-07-26
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      相关资源
      最近更新 更多