假设我有一个com.google.gwt.dom.client.Document gwtDocument
节点,我想将其转换为elemental2.dom.Document
?
由于Document扩展了JavaScriptObject,我认为我可以做类似的事情:
elemental2.dom.Document elementalDoc = (elemental2.dom.Document)(gwtDocument);
但是使用jsinterop的elemental2类不会扩展JavaScriptObject。那么如何在两者之间进行转换?
谢谢!
答案 0 :(得分:5)
您可以转换为对象并强制转换为元素类型(示例1)。这有点难看,因此有一个实用程序库可以在GWT和未来的J2CL编译器中使用,称为jsinterop-base。 Js
实用程序可用于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
个实例。