cc.screen相关的API修改建议

浏览器

cc.screen有几个接口用于处理全屏,这几个接口很容易引起document not active报错,播放全屏视频内部会调用该接口

如下面


/**
     * exit the full mode.
     * @method exitFullScreen
     * @return {Boolean}
     */
    exitFullScreen: function (element) {
        if (element && element.tagName.toLowerCase() === "video") {
            if (cc.sys.os === cc.sys.OS_IOS && cc.sys.isBrowser) {
                element.webkitExitFullscreen && element.webkitExitFullscreen();
                return;
            }
            else {
                element.setAttribute("x5-video-player-fullscreen", "false");
            }
        }
        return this._supportsFullScreen ? document[this._fn.exitFullscreen]() : true;
    },

Web Api标准里面,document.exitFullscreen()返回的是一个Promise对象而非boolean。

https://developer.mozilla.org/en-US/docs/Web/API/Document/exitFullscreen

官方能否统一该接口的返回参数?

暂时的修改方式


        cc.screen.$exitFullScreen = cc.screen.exitFullScreen;
        cc.screen.exitFullScreen = function(){
            let result = Promise.resolve( cc.screen.$exitFullScreen() );
            result.catch( (err)=>{
                cc.log(err);
            } )
        }

1赞

看起来你的改动好像也没解决这个 document not active 的报错,只是把报错转换成了普通的 log?

是的,只是不让爆红

顶个旧帖

虽然不影响游戏

但看着收集错误回报的日志一直有这项看着就有点烦人就是了

这个好像还是解决不了报错问题