如何在Firefox中保存全屏状态?

时间:2018-04-11 16:07:39

标签: javascript android

关注Mozilla's API document on Fullscreen,我在我的网站上放置了以下代码,它只需要整个文档(html元素),并在用户点击页面中的任意位置后使页面全屏显示,并且一旦有另一个点击,页面恢复正常。

var videoElement = document.getElementsByTagName('html')[0];

function toggleFullScreen() {
    if (!document.mozFullScreen) {
        if (videoElement.mozRequestFullScreen) {
            videoElement.mozRequestFullScreen();
        }
    } else {
        if (document.mozCancelFullScreen) {
            document.mozCancelFullScreen();
        } 
    }
}

window.addEventListener("click", function(e) {
    toggleFullScreen();
}, false);

我的问题是如何保存此全屏状态,因此每次Firefox加载时,该页面仍然是全屏。 或任何解决方法?这适用于Android版Firefox。

4 个答案:

答案 0 :(得分:2)

这是一种极端的解决方法,但您可以将自己的网站设为progressive web app并将"display": "fullscreen"放入其manifest。然后你可以launch your site from the home screen and use it like a fullscreen native app

答案 1 :(得分:1)

通过我的实验the specs,这是不可行的,来自客户端浏览器javascript

此API需要用户交互。我们无法通过脚本激活全屏。

来自全屏api规范

  

如果没有以前建立的用户,则支持全屏   偏好,安全风险或平台限制。

     

如果满足下列条件之一,则允许算法请求全屏   是的:

The algorithm is triggered by user activation.

The algorithm is triggered by a user generated orientation change.
     

https://fullscreen.spec.whatwg.org/#model

关于激活事件

  

如果满足以下任何条件,则由用户激活触发算法   条件是真的:

     

运行算法的任务当前正在处理   激活行为,其click事件的isTrusted属性为true。

     

运行算法的任务当前正在运行   isTrusted属性为true的事件的事件侦听器   其类型是:

     

change

     

click

     

dblclick

     

mouseup

     

pointerup

     

reset

     

submit

     

touchend

     

https://html.spec.whatwg.org/multipage/interaction.html#triggered-by-user-activation

我们无法从脚本触发全屏,或者如果是这样,脚本必须由用户触发。

包括模拟点击将无效,这是常规行为,旨在保护用户体验。

有了一些反思,我们无法就此达成一致,想象任何广告页面都可以启动全屏,网络将是一个难以浏览的地方!

你在评论中说:«我是这里唯一的用户»

你能做什么如果使用unix :((可能在其他操作系统中存在替代品))。

使用midori(一个轻量级的webkit浏览器),这将启动一个真正的全屏。

midori -e Fullscreen -a myurl.html

据我所知,没有办法从命令行以全屏状态启动 firefox chrome

但可行的是在系统级别触发 F11 点击,专注于良好的窗口,就在页面启动后。 (( sendkey 在android adb shell中?))

xdotool可以做到这一点。

这是一个管道命令行,它将使用 myurl.html 启动firefox,搜索最近的firefox窗口ID,然后在此窗口上触发F11键..(按F11 再次退出)

firefox myurl.html && xdotool search --name firefox | tail -1 | xdotool key F11

这应该很容易适应其他浏览器。

作为最后一种选择,请查看electronnw.js

答案 2 :(得分:0)

看看这个针对Firefox的添加,我还没有尝试过,因为我是从手机发布的,它的描述确实说它可以强制启动全屏。我只是引用他们的描述。

  

永久保存最后一个状态或强制启动!简单而且   完成此目的。

编辑:以及它的链接 https://addons.mozilla.org/en-US/firefox/addon/mfull/

答案 3 :(得分:0)

如何使用这样的localStorage呢?

function goFullScreen() {
  if (videoElement.mozRequestFullScreen) {
    localStorage.setItem('fullscreenEnabled', true)
    videoElement.mozRequestFullScreen();
  }
}

window.onload = function () {
  if (localStorage.getItem('fullscreenEnabled') === true) {
    goFullScreen();
  }
};

function toggleFullScreen() {
  if (!document.mozFullScreen) {
    goFullScreen();
  } else {
    if (document.mozCancelFullScreen) {
      document.mozCancelFullScreen();
      localStorage.setItem('fullscreenEnabled', false)
    }
  }
}

window.addEventListener("click", function(e) {
  toggleFullScreen();
}, false)