如何使用HTML5全屏API

更新:本文现已过时。 请参阅更新的版本, 如何使用HTML5全屏API(再次)

Flash提供全屏模式已经有很多年了,但是直到现在,浏览器供应商都拒绝使用该功能。 主要原因:安全性。 如果您可以强制应用程序全屏运行,则用户将丢失其浏览器,任务栏和标准操作系统控件。 他们可能无法关闭窗口,或者更糟糕的是,邪恶的开发人员可能会模仿操作系统并诱使用户交出密码,信用卡详细信息等。

在撰写本文时,HTML5全屏API已在Firefox,Chrome和Safari中实现。 Mozilla提供了良好的跨浏览器详细信息,但值得注意的是规范和实现的详细信息可能会发生变化。

与按F11键使浏览器全屏显示不同,API会将单个元素设置为全屏显示。 适用于使用canvas元素的图像,视频和游戏。 元素全屏显示后,会暂时出现一条消息,通知用户可以随时按ESC返回窗口模式。

主要属性,方法和样式是:

element.requestFullScreen()
使单个元素全屏显示,例如document.getElementById(“ myvideo”)。requestFullScreen()。

document.cancelFullScreen()
退出全屏模式并返回到文档视图。

document.fullScreen
如果浏览器处于全屏模式,则返回true。

:全屏
一个CSS伪类,适用于处于全屏模式的元素。

令人恼火的供应商前缀

不要打扰尝试使用这些API名称。 你将需要持续 CSS和JavaScript属性供应商前缀:

标准 Chrome / Safari 火狐浏览器
.requestFullScreen() .webkitRequestFullScreen() .mozRequestFullScreen()
.cancelFullScreen() .webkitCancelFullScreen() .mozCancelFullScreen()
。全屏 .webkitIsFullScreen .mozfullScreen
:全屏 :-webkit-全屏 :-moz全屏

Internet Explorer或Opera中尚不支持,但我建议您使用'ms'和'o'前缀进行将来的校对。

我在演示页面上开发了一个函数,可以为您处理前缀恶作剧:


var pfx = ["webkit", "moz", "ms", "o", ""];
function RunPrefixMethod(obj, method) {
	
	var p = 0, m, t;
	while (p < pfx.length && !obj[m]) {
		m = method;
		if (pfx[p] == "") {
			m = m.substr(0,1).toLowerCase() + m.substr(1);
		}
		m = pfx[p] + m;
		t = typeof obj[m];
		if (t != "undefined") {
			pfx = [pfx[p]];
			return (t == "function" ? obj[m]() : obj[m]);
		}
		p++;
	}

}

然后,我们可以通过附加处理程序函数使任何元素在全屏可见,该处理函数确定该元素是否已处于全屏模式并采取相应的行动:


var e = document.getElementById("fullscreen");

e.onclick = function() {

	if (RunPrefixMethod(document, "FullScreen") || RunPrefixMethod(document, "IsFullScreen")) {
		RunPrefixMethod(document, "CancelFullScreen");
	}
	else {
		RunPrefixMethod(e, "RequestFullScreen");
	}

}

CSS

浏览器进入全屏模式后,您几乎肯定会想要修改该元素及其子元素的样式。 例如,如果您的元素通常具有500px的宽度,则需要将其更改为100%,以便使用可用空间,例如


#myelement
{
	width: 500px;
}

#myelement:full-screen
{
	width: 100%;
}

#myelement:full-screen img
{
	width: 100%;
}

但是, 您不能使用供应商前缀选择器的列表


/* THIS DOES NOT WORK */
#myelement:-webkit-full-screen,
#myelement:-moz-full-screen,
#myelement:-ms-full-screen,
#myelement:-o-full-screen,
#myelement:full-screen
{
	width: 100%;
}

出于某些奇怪的原因,您必须在自己的块中重复样式,否则将不会应用它们:


/* this works */
#myelement:-webkit-full-screen	{ width: 100% }
#myelement:-moz-full-screen		{ width: 100% }
#myelement:-ms-full-screen		{ width: 100% }
#myelement:-o-full-screen		{ width: 100% }
#myelement:full-screen			{ width: 100% }

奇怪的。

在Firefox,Chrome或Safari中查看演示页面…

该技术效果很好。 我发现的唯一问题与在两显示器桌面上的Safari有关–即使浏览器在第二屏幕上运行,它仍坚持将第一台显示器用于全屏模式?

虽然使用全屏模式可能还为时过早,但游戏开发人员和视频制作人员应密切注意进度。

如果您喜欢阅读这篇文章,您会喜欢Learnable的 向大师学习新鲜技能的地方。 会员可以立即访问所有SitePoint的电子书和交互式在线课程,例如针对真实世界的HTML5和CSS3

本文的评论已关闭。 对HTML5有疑问吗? 为什么不在我们的论坛上提问呢?

From: https://www.sitepoint.com/html5-full-screen-api/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值