在新窗口中加载网页时,全屏模式不起作用

时间:2019-01-28 08:20:24

标签: c# asp.net httpresponse scriptmanager

我使用以下代码段从A.aspx网页移动到B.aspx网页,并且需要在单独的窗口中以全屏模式加载B.aspx页面。我能够将内容加载到单独的窗口中,但无法使其全屏显示。窗口仅出现在屏幕的一半

Response.Redirect("B.aspx", "", "fullscreen=yes");

我也使用ScriptManager进行了尝试,但是我又遇到了同样的问题。以下是代码段。

string url = "B.aspx";
ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", "window.open(' " + url + "', '', 'fullscreen=yes,resizable=no,scrollbars=yes,toolbar=no,menubar=no,status=yes' );", true); 

我还尝试设置窗口的宽度和高度,并获得相同的输出!

注意:该问题在Google Chrome和Microsoft Edge浏览器上发生。当我在Firefox上运行该程序时,页面全屏加载。这是浏览器问题,还是可以通过与所有浏览器兼容的方法来实现?

1 个答案:

答案 0 :(得分:1)

这里有一些错误和建议:

1)Response.Redirect()方法最多只能接受2个参数,因此不能将fullscreen=yes用作第三个参数。

2)作为fullscreen=yes参数的window.open()仅适用于IE(和较旧的Firefox),但不支持所有版本(MDN reference)。您需要在目标页面上使用特定于浏览器的API。

因此,如前所述,您应该添加一个函数来调用全屏API,具体取决于客户端浏览器:

function fullScreenMode(element) {
    if(element.requestFullscreen)
        element.requestFullscreen();
    else if(element.mozRequestFullScreen)
        element.mozRequestFullScreen();
    else if(element.webkitRequestFullscreen)
        element.webkitRequestFullscreen();
    else if(element.msRequestFullscreen)
        element.msRequestFullscreen();
}

然后像这样修改RegisterStartupScript

ScriptManager.RegisterStartupScript(this, typeof(string), "OPEN_WINDOW", 
              "window.open('" + url + @"', '', 'resizable=no,scrollbars=yes,toolbar=no,menubar=no,status=yes' );", true);

当用户触发某些DOM事件时,请在目标页面上调用fullScreenMode(document.documentElement)函数,因为某些浏览器以类似于window.open()函数的方式设置了限制以防止弹出窗口滥用。

相关问题:

How to open a web page automatically in full screen mode

Setting the whole window to be fullscreen in recent browsers