问题标签 [webidl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
40901 浏览

c# - 如何将常量与 C# 中的接口相关联?

某些语言允许您将常量与接口相关联:

W3C 抽象接口也是如此,例如:

我想定义这个接口,以便可以从 C# 调用它。

显然 C# 无法定义与接口关联的常量。

  • 将这样的接口转换为 C# 的常用方法是什么?
  • DOM 接口是否有任何“规范”C# 绑定?
  • 尽管 C# 不能,但是否有另一种 .NET 语言可以定义与接口关联的常量?
0 投票
1 回答
1048 浏览

javascript - 为什么 Mozilla 有用 IDL 编写的 JavaScript 文档

阅读有关fileReader的文档,并发现他们使用void运算符编写方法,如下所示:

只是想了解他们为什么要这样写?这种语法是否有任何实际用途?

后来发现根本不是js,而是IDL,即接口描述语言。

仅供参考:在问这个问题之前,我使用谷歌搜索并阅读了 JS 中实际的 void 运算符。所以请没有必要让我回来。问题有点模糊,但它必须处理,为什么 Mozilla 有这样写的关于 JavaScript 的文档?在 IDL 中与实际 JavaScript 几乎没有什么关系?

0 投票
1 回答
96 浏览

c++ - 在 Firefox (C++) 中使用 WebIDL 创建的对象的 nsIClassInfo 的类似物?

我使用 Gecko SDK 构建了一个 C++ 工具来检查在 Firefox 中打开的网页(及其内部)。我使用 nsIClassInfo 来获取有关被检查对象的属性和方法(及其参数)的信息,并且效果很好。Firefox 现在正在转向使用 WebIDL,它会删除转换对象的类信息。是否有类似的方法可以在运行时使用 C++ 代码获取有关 WebIDL 接口的完整信息?

0 投票
2 回答
1311 浏览

javascript - WebKit/Phantomjs 为什么 getComputedStyles 的输出是这样的?

在大多数浏览器(例如 Firefox、Opera)上,获取元素的计算样式会返回一个不错的类型对象CSSStyleDeclaration。在 Chrome 28 和 PhantomJS 1.9 上,我得到一个以编号键开头的对象,列出所有 CSS 属性,然后是属性(如果是 Chrome)。

例如,在歌剧中: 在此处输入图像描述

在 Chrome 28 中: 在此处输入图像描述

然后最终你会得到有用的部分: 在此处输入图像描述

在 PhantomJS 1.9 中更糟糕的是,你得到了编号的属性,然后只有两个命名属性:长度和 cssText。

0 投票
1 回答
148 浏览

javascript - WebIDL 定义 JS Number 类型的 unsigned short

我阅读了一个文档,它指出 WebIDL 定义了 IDL 无符号短映射到 JS 编号。

unsigned short 的范围是 0 到 65535。JS Number 可以是 -9007199254740992 到 9007199254740992。

这真的让我很困惑,因为这两个定义之间的差距很大。谁能解释一下?

谢谢

0 投票
1 回答
726 浏览

javascript - 使现有的 C++ 项目在 Firefox OS 中工作

我有一个现有的 c++/java 项目,可以在 linux、windows 和 android 上运行,我也想让它在 firefox OS (B2G) 上运行。我已经为 FFOS 构建了我的项目的二进制文件(守护程序和客户端),并使用 adb shell 在命令行上对其进行了测试。问题是如何使用 javascript 通过用户应用程序访问该守护程序。

由于 FFOS 将 HTML/JS/CSS 用于应用程序,因此一个建议是使用“emscripten”工具将整个项目转换为 javascript。但是考虑到我的项目的规模和复杂性,这似乎不起作用(很多错误,缺少头文件等)。它使用一些低级功能,例如创建 UDP 数据包、发送多播数据包以及侦听和连接到 tcp/udp 端口​​;javascript API 中缺少这些功能(我错了吗?)。

另一个建议是使用 Web IDL(需要修改 FFOS gecko 引擎),但我不确定它在我的场景中如何帮助我。

任何想法/提示/建议将不胜感激。谢谢。

0 投票
0 回答
59 浏览

javascript - 如何将 IDL 语音识别 api 添加到 javascript

我是使用 api 的新手,但我想在我的程序中实现语音识别 api。我正在尝试在此链接https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html上使用 api我需要将 api 添加到我的 java 脚本中我该怎么做我不熟悉 WebIDL,所以我不知道如何设置它。

0 投票
1 回答
1239 浏览

javascript - 如何确定 Javascript 数字是否在单精度范围内?

根据ECMAScript 规范,Javascript 数值对应于双精度 64 位二进制格式 IEEE 754 值。

对于我目前正在研究的 WebIDL 验证器,我需要能够确定给定的数值是否可以转换为WebIDL 浮点类型,即它是否可以表示为有限单精度 32 位 IEEE 754 值.

我目前已经确定了以下方法:

本质上,我正在做的是:

  1. 将 a 包裹DataView在 4 字节左右ArrayBuffer
  2. 将该Number值作为 32 位浮点数存储在缓冲区中。
  3. 将转换后的数字从缓冲区中取出。
  4. 计算原始值和转换值之间的相对误差。
  5. 检查相对误差是否小于浮点数的机器 epsilonNumber.EPSILON ,使用.

一些评论:

上述逻辑是否适合我想要实现的目标?是不是矫枉过正?有没有更惯用、更优雅或更高效的方式来做到这一点?

更新

与此同时,我发现上述方法是不正确的。1.001对于大范围的值(例如、等),它将失败3.14159。另一方面,将 epsilon 值更改为 32 位浮点数 (2 −2316777217 ) 的机器 epsilon 过于宽松,允许使用.

仍在寻找一个好的解决方案,但目前正在使用下面的函数,它只检查整数上限和下限(2 24和 -(2 24 ))。

0 投票
0 回答
121 浏览

python - 如何安装 WebIDL Ubuntu

您好我正在尝试使用 emscripten 构建一个库。我遇到错误

如果找不到模块 WebIDL,我该如何安装它?

我尝试了 npm-instll webidl 但只是在 make 目录中创建了一个 node-modules 文件夹。如果我想让它工作,我应该把它安装到哪里?

编辑:我一直在做一些阅读,它似乎是一个 python 的东西。我仍然不知道如何安装 WebIDL python 模块。

0 投票
0 回答
74 浏览

javascript - WebIDL 类继承要求的基本原理/后果

在我贡献的一个 JavaScript 库(Node 和浏览器)中(IndexedDBShim),为了完整的测试覆盖率,我希望确保我们不仅可以更好地通过与 IndexedDB 相关的一般 W3C 测试,还可以通过基于 WebIDL 的测试与 IndexedDB 相关的接口测试。

为此,当我运行 W3C 的 WebIDL 测试EventCustomEvent与我们正在使用的 Event polyfill 接口时,在解析后变得明显的一个测试要求interface CustomEvent : Event是必须将 的原型CustomEvent设置为Event. 请注意,我不是指CustomEvent 对象Event的原型必须从(alaCustomEvent.prototype = new Event();或)继承的任何要求,请注意,CustomEvent.prototype = Object.create(Event);负责类的对象的原型(构造函数CustomEvent)设置为Event而不是默认值, Function.prototype)。

果然,在 Chrome 的控制台中,我看到对于内置接口,Object.getPrototypeOf(CustomEvent) === Event确实是true. 据我所知,我可以在 polyfill 中实现这一点的唯一(基于标准的)方法是执行以下操作:

...但我在MDN上看到警告说这种方法在所有浏览器中都很慢。

我想我只需要选择性能损失是否值得更大的标准合规性。

但是,无论如何,我仍然希望更好地了解以这种方式继承接口的后果是什么(也许这更多的是我对 JavaScript 的理解而不是 WebIDL 本身的问题) .

由于函数对象原型之间仅存在这种关联,因此继承接口的方法不会被基接口继承,因此期望类函数之间的原型连接仅表示接口之间的继承层次为了任何可能希望在代码中反省它们的人?或者对于类原型连接的这个特殊要求还有其他一些实际后果吗?