Gwt elemental2:如何在gwt JavaScript对象和JsInterop对象之间进行转换?

时间:2018-03-22 18:13:24

标签: gwt gwt-jsinterop gwt-elemental

假设我有一个com.google.gwt.dom.client.Document gwtDocument节点,我想将其转换为elemental2.dom.Document

由于Document扩展了JavaScriptObject,我认为我可以做类似的事情:

elemental2.dom.Document elementalDoc = (elemental2.dom.Document)(gwtDocument);

但是使用jsinterop的elemental2类不会扩展JavaScriptObject。那么如何在两者之间进行转换?

谢谢!

1 个答案:

答案 0 :(得分:5)

您可以转换为对象并强制转换为元素类型(示例1)。这有点难看,因此有一个实用程序库可以在GWT和未来的J2CL编译器中使用,称为jsinterop-baseJs实用程序可用于cast(2)和uncheckedCast(3)任何对象。 {... 1}}应该避免使用,只有在你知道自己在做什么的情况下才会使用{例如,在iframe之间投射会失败,或者其他特殊的js情况)。

uncheckedCast

因此,在客户端代码中,您应该使用com.google.gwt.dom.client.Document gwtDocument = Document.get(); elemental2.dom.Document el1 = (elemental2.dom.Document) (Object) gwtDocument; elemental2.dom.Document el2 = jsinterop.base.Js.cast(gwtDocument); elemental2.dom.Document el3 = jsinterop.base.Js.uncheckedCast(gwtDocument); Js.cast dom实例转换为GWT个实例。