WinJS UWP WebView应用如何默认全屏启动:找不到App.Xaml.Cs改main.js无效
问题根因
- WinJS UWP项目模板本身不包含
App.xaml.cs文件,该文件仅用于XAML语言栈的UWP项目,所有生命周期逻辑均由main.js承载,之前的文件查找方向存在偏差。 - 你修改后的
main.js存在三处直接导致全屏失效的问题:- 参考的示例代码中,
launchInFullScreenMode是页面上的复选框控件,你仅复制了JS逻辑但未在对应HTML页面中添加该控件,运行时访问该元素会直接抛出空引用异常,中断后续启动流程 - 代码中存在语法错误:
args.setPromise(WinJS.UI.processAll();缺少闭合括号,导致脚本无法正常解析执行 - 仅配置了启动窗口偏好,未在视图初始化完成的节点主动触发全屏进入逻辑
- 参考的示例代码中,
实现默认全屏启动的修改方案
- 删除所有与
launchInFullScreenMode相关的冗余代码,包括对应的事件绑定、属性读写、自定义状态判断函数 - 修正原有代码中的语法错误,补充视图初始化阶段的全屏触发逻辑
- 可按需添加标题栏移除逻辑,实现沉浸式全屏效果
修正后的可直接运行的main.js完整代码
(function () { "use strict"; var app = WinJS.Application; var activation = Windows.ApplicationModel.Activation; var isFirstActivation = true; var ViewManagement = Windows.UI.ViewManagement; var ApplicationViewWindowingMode = ViewManagement.ApplicationViewWindowingMode; var ApplicationView = ViewManagement.ApplicationView; app.onactivated = function (args) { if (args.detail.kind === activation.ActivationKind.launch) { // 配置默认启动窗口为全屏模式 ApplicationView.preferredLaunchWindowingMode = ApplicationViewWindowingMode.fullScreen; } if (!args.detail.prelaunchActivated) { // 非预启动场景下,执行启动初始化逻辑 if (args.detail.kind === activation.ActivationKind.launch) { // 获取当前视图,主动触发全屏进入,对应原C#版本的调用逻辑 var currentView = ApplicationView.GetForCurrentView(); currentView.TryEnterFullScreenMode(); // 可选:移除默认标题栏,实现沉浸式全屏 var titleBar = currentView.TitleBar; titleBar.BackgroundColor = Windows.UI.Colors.Transparent; titleBar.ButtonBackgroundColor = Windows.UI.Colors.Transparent; currentView.SetTitleBar(null); } } if (isFirstActivation) { document.addEventListener("visibilitychange", onVisibilityChanged); // 修正原有语法错误,补充processAll的闭合括号 args.setPromise(WinJS.UI.processAll()); } isFirstActivation = false; }; function onVisibilityChanged(args) { if (!document.hidden) { // 应用切回前台时的视图刷新逻辑可按需补充 } } app.oncheckpoint = function (args) { // 应用挂起时的状态持久化逻辑可按需补充 }; app.start(); })();
注意事项
- 上述逻辑全部基于JS实现,无需依赖任何C#代码文件,WinRT API可通过WinJS的全局命名空间直接调用
- 若需要保留退出全屏的能力,可在页面交互元素中绑定
currentView.ExitFullScreenMode()方法即可 - 配置完成后无需修改
package.appxmanifest中的其他设置,即可实现应用启动即默认全屏的效果
内容的提问来源于stack exchange,提问作者Ahamed
相关产品推荐
相关产品推荐

