如何在编译的 dart 中请求全屏

2023-12-01

我正在玩一个 Dart 应用程序,试图让全屏模式正常工作。我的 HTML(不包括样板):

<div id="fullscreen_div">
  Clicking this should cause it to go fullscreen!
</div>

我的飞镖代码:

import 'dart:html';

void main() {
  var div = querySelector('#fullscreen_div');
  div.onClick.listen((MouseEvent e) {
    div.requestFullscreen();
    print('requested fullscreen');
  });
}

这是 DartPad 上的。

如果我做得正确,单击 div 一次应该会导致 div 进入全屏模式。在 Chromium 上,这是有效的。当编译为 JavaScript(调试和缩小)时,不会发生这种情况,控制台输出:

Uncaught TypeError: undefined is not a function

Chrome、Firefox 和 IE 都会出现这种情况(在 Windows 7 上测试)。据我了解,这是一个常见的 JavaScript 错误,搜索不会出现任何明显的错误。

任何想法为什么requestFullScreendart 编译成 JS 后不起作用?


正如评论中所指出的(感谢 Günter!),这是一个已知问题。该线程中的 #12 发布了一个很好的解决方法,由我编辑为更通用一些:

import 'dart:js';
void fullscreenWorkaround(Element element) {
  var elem = new JsObject.fromBrowserObject(element);

  if (elem.hasProperty("requestFullscreen")) {
    elem.callMethod("requestFullscreen");
  }
  else {
    List<String> vendors = ['moz', 'webkit', 'ms', 'o'];
    for (String vendor in vendors) {
      String vendorFullscreen = "${vendor}RequestFullscreen";
      if (vendor == 'moz') {
        vendorFullscreen = "${vendor}RequestFullScreen";
      }
      if (elem.hasProperty(vendorFullscreen)) {
        elem.callMethod(vendorFullscreen);
        return;
      }
    }
  }
}

我在代码中使用了这个,并替换了这个调用

div.requestFullscreen();

with

fullscreenWorkaround(div);

效果很好。在 Chrome 和 IE 上测试并编译工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在编译的 dart 中请求全屏 的相关文章

随机推荐

  • ASP.NET core Angular SPA 模板将自定义引导主题添加到 webpack.config.js

    我需要将自定义引导模板添加到 asp net core spa 模板 我使用命令创建了寺庙 dotnet new install Microsoft AspNetCore SpaTemplates dotnet new angular 生成
  • 计算两个日期之间的年+月+日? [复制]

    这个问题在这里已经有答案了 我有两个人的出生信息 我想对他们做一些分析 比如 他们的年龄之差 秒 年 月 日 我试过这个 from datetime import date a date 1991 07 20 b date 1999 06
  • 使用 Play 2 / Scala 提供本地图像

    我正在尝试找出一种在本地上传和提供文件 图像 的模式 我弄清楚了上传部分 但对存储和服务部分有点困惑 我对如何使用 Ok sendFile 在单个页面上显示本地存储的图像感到困惑 如何将其绑定到视图上的 img src 标签中 我能想到的另
  • 以编程方式链接到特定(非函数)文档页面

    作为为我的代码编写一些文档的一部分 我想包含一个可运行的命令 该命令将向用户显示我所想到的来自 MATLAB 文档的一些特定文档页面 当所需页面属于某个功能或工具时 例如 doc cftool 或者 如果可能存在歧义 也可以指定文件夹 包名
  • 如何根据 Out- Alu 输出的值执行跳转指令

    图来自 计算机系统要素 Nand2Tetris 看看场景 j1 1 out lt 0 j2 0 out 0 j3 1 out gt 0 这种情况如何可能输出 也是如此输出 gt 0 but out 0是假的 如何out可以同时具有正值和负值
  • xcode 4.6 目标构建设置缺少“Apple LLVM 编译器 4.2 - ...”部分

    在 xcode 4 6 中 我创建了一个具有多个目标的新项目 我的目标之一是一个空的 iOS 应用程序 缺少目标构建设置中的所有 Apple LLVM 编译器 4 2 部分 还有其他人看过这个吗 关于如何让它们显示有什么想法吗 我能够通过六
  • 如何左对齐 jqmath 表中的元素

    如果我尝试创建一个表jqmath 它总是以元素为中心 所以如果我写 table a b c dddddddddddd 然后我得到 a b c dddddddddddd 如何使 jqmath 将列向左对齐 以便表格显示为 a b c dddd
  • 从 CSV 读取列数据

    我有一个 CSV 文件 Name Age Data Test 22 Yes Test2 23 No Test3 43 Yes 如何使用 PowerShell 处理此文件 以便我可以复制此功能 foreach var HeaderName i
  • 使用 Docker Compose 将 DDEV Web 容器端口公开给主机

    我已经配置了 DDEV Drupal 环境 需要在其中为我的主题运行 Pattern Lab 这个环境将由我的学生使用 他们可能不熟悉在本地计算机上安装 Node 或 Node 依赖工具 Pattern Lab 需要 Node 作为解决方法
  • 谷歌字体字体粗细为 100 不起作用

    我有一个 Android 游戏 它使用谷歌字体中的 Raleway 字体 在游戏中它看起来不错 我也想在网站上使用该字体 但字体显示不一样 我在游戏中使用Raleway Thin 这与我想在网站上使用的相同 我遇到的问题是细字体并不像游戏中
  • sqlsrv_connect:未找到数据源名称且未指定默认驱动程序

    我在将 PHP 与远程计算机上运行的 SQL SERVER 2008 连接时遇到困难 我有 php 版本 5 4 3 和 apache 2 2 22 我的计算机上已经运行了 SQL SERVER 2008 我的 wamp bin php p
  • 如何为 GlassFish 域指定 JDK?

    我已经安装了 GlassFish 2 1 1 我安装了 1 5 和 1 6 JDK 尽管我的 JAVA HOME 变量设置为 1 5 版本 并且 java version 和 javac version 都显示 1 5 但每当我启动 gla
  • openCV c++:使用 XgBoost(Adaboost 分类器)时出现问题

    我正在创建一个应用程序 用于对城市环境图像中的人类进行分类 我通过以下方式训练分类器 int main int argc char argv STEP 2 Opening the file 1 Declare a structure to
  • 课堂上的陈述作业

    class foo object def enter self print Enter def exit self type value traceback print Exit def method self print Method w
  • Wildfly 在 EAR 之间共享会话?

    我在 2 个独立的 EAR 中有 2 个 WAR 应用程序 我想将它们部署在 Wildfly 10 JBoss 7 EAP 的单个实例中 我如何在两场战争之间共享会话 身份验证 Ex EAR1 WAR1 EJB libs EAR2 WAR2
  • 如何在matlab中计算指数而不得到inf?

    标题说明了一切 我想在 matlab 中计算一个大数字的指数 但我得到了溢出 它只返回无穷大 gt gt 100 1000 ans Inf 上次我检查时 100 1000 明显小于无穷大 正如 Daniel 已经指出的那样 这个数字太大了
  • 如果不允许跨域ajax调用那么你应该如何使用谷歌电子表格API

    如果不允许跨域ajax调用那么你应该怎么做this 注意 链接已废弃 问题已更新为相关原始页面的相关部分 来自链接 开发人员指南 协议 v 2 0 Google Spreadsheets API 添加一行 要向表中添加一行 首先创建一个
  • 如何检测用户何时清除应用程序的通知

    我的应用程序有通知功能 当我收到通知时 我的应用程序图标中会显示一个徽章 据我所知 当我的应用程序处于后台时 由于用户没有单击通知中心的通知 因此我的应用程序不知道它有通知 所以它不能改变徽章号码 也来自这个主题 检测用户何时清除通知中心的
  • 执行 del 批处理文件时排除 temp 内的文件夹

    如果我想排除要删除的文件夹内的文件夹 我应该在 DEL 批处理文件中添加什么 我有这个代码来删除临时文件夹的所有内容 DEL F Q C temp 现在 我想排除一个名为导入文件夹里面 无论它是否存在于临时文件夹中 都不应被删除 我该怎么做
  • 如何在编译的 dart 中请求全屏

    我正在玩一个 Dart 应用程序 试图让全屏模式正常工作 我的 HTML 不包括样板 div Clicking this should cause it to go fullscreen div 我的飞镖代码 import dart htm