问题标签 [gwt-jsinterop]

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 投票
1 回答
45 浏览

gwt - 使用 -generateJsInteropExports 控制 GWT 包含哪些类

我可以控制使用时包含哪些类-generateJsInteropExports吗?

我发现当我使用标志时,JS 输出包含一堆我没有在项目中使用的类,但它们的源代码出现在我正在使用的一些包中。我不希望这些类包含在输出中。通常,GWT 在只引入我实际使用的类方面做得很好。

我如何告诉编译器“在这个编译中我希望你为这些类生成 JsInterop,但不是这些”?

我找到了这些GWT 编译器选项

在生成 JsInterop 导出时包含/排除成员和类。可以多次设置标志以扩展模式。(该标志仅在通过 -generateJsInteropExports 启用导出时有效)

但我似乎无法让他们工作。我尝试使用:

课程不包括在内。

0 投票
1 回答
626 浏览

gwt - 如果我想为 GWT 3 做好准备,我应该停止使用 GSS 等吗?

我放弃了 GWT 小部件,转而使用 JsInterop 和 Elemental2。

但我仍在使用来自“gwt-user.jar”的模块用于GSS、Resources 和 I18N

下一版本的 GWT 是否可能支持这些模块?如果没有,我可以使用对未来友好的替代方案吗?

我刚刚开始,所以我宁愿现在“正确”地得到它,而不是稍后再取消它。

0 投票
1 回答
398 浏览

gwt - 带有 JsInterop 的 GWT 中的 Javascript 模块函数

希望这比我做的要容易 - 我是一名 Java 编码员,一些内部 Javascript 方面对我来说有点陌生。

尝试将出色的CodeJar 库嵌入GWT 面板中。CodeJar 有一个非常好的/简单的示例:

模块函数本身如下所示:

'editor' 是一个 Div 引用,'highlight' 是一个用于处理代码高亮的回调库函数。

我正在与 JsInterop 标记和代码作斗争,以使 Javascript 模块与 GWT 一起工作。以上有一些我正在与之抗争的方面

  • 替换“导入”,以便 GWT 可以使用 javascript 模块代码。Obvioulsy 我可以在我的顶级 index.html 中导入 js,但据我了解,JS 模块不会成为全局命名空间的一部分,它们只能从导入它们的 JS 模块中使用。在我的情况下,大概需要是 GWT 代码。
  • 在 GWT 中重新编码上述内容时如何传递回调函数
  • 如何获取我自己的“jar”引用来设置/获取自己的文本(替换使用本地存储)
0 投票
0 回答
35 浏览

gwt - 如何在使用 gwt.jsinterop 时访问 window.opener

我想通过 gwt.jsinterop 访问 javascript window.opener。所以我这样定义我的界面:

但这不起作用。看来我必须定义:

但是我怎样才能访问“Window”的基本实例“window”呢?(见不同情况)

谢谢

0 投票
3 回答
103 浏览

java - WebGPU JsInterop 包装器

我正在尝试使用 JsInterop 在 GWT 2.9.0 中使用 WebGPU,但在尝试将所有 WebGPU 接口映射到 Java 时遇到了一些问题。我所指的定义位于https://www.w3.org/TR/webgpu/#idl-index

1)我如何映射一个无符号长长的?

有一个 typedef:typedef [EnforceRange] unsigned long long GPUSize64; 例如在这里使用:

如果我把它包起来

我收到一条错误消息:

鉴于我的更高级别的 API 仅在此处公开一个 int 以与其他 API 兼容,我可能只使用一个 int,但映射 GPUSize64 的正确解决方案是什么?

2)我如何包装字典?

当我尝试翻译以下定义时

像这样:

然后按以下方式使用它:

我可以编译得很好,但在运行时出现错误说

令我困惑的是,它两次说“无法从'GPUExtent3DDict'读取'width'属性”,这暗示它需要嵌套的东西,并且可能与typedef中关于“sequence or GPUExtent3DDict”的最后一行有关,我不明白。当我以这种方式定义 GPUExtent3D 时:

然后像这样使用它:

它工作得很好,但我想用 JsInterop 方式而不是 JavaScriptObject 范围。我该怎么做呢?

3)如何映射一个枚举?

我还在这里找到了一个可行的解决方案,我想知道这是推荐的还是不推荐使用的/旧的方法给定一个枚举声明:

我可以像这样映射它吗

或者有没有办法为此使用带有@JsEnum的java枚举(我试过但在值中使用的破折号有问题)

非常感谢,祝您有愉快的一天!

0 投票
2 回答
32 浏览

gwt - 从 JS 调用 Java 对象

我正在尝试与 JS api 交互,一旦视频加载/加载失败/被查看,我想使用 EventSystem 发回一个事件。我得到了第一部分的工作,我称之为原生 JS api:

我的问题是从 JS 调用 Java 对象,我附带了一个响应处理程序类,它依赖于 EventSystem。如何在此类中初始化 EventSystem,然后让 JS 承诺解析调用sendEvent?(为了说明清楚,上面的JS代码控制台调用,需要改为调用eventSystem,来报告成功或错误)。