0
サードパーティのアプリケーションのホストページには、グローバルオブジェクトwindow.PageObject
が含まれている可能性があります。それが存在する場合、私のアプリはそのプロパティと機能を使用する必要があります。私はJsInteropを用いて溶液を作ってみたが、それはプロパティ/機能ごとに複数のメソッド宣言が必要です。JsInteropで未定義のグローバルオブジェクトを使用するにはどうすればよいですか?
@JsType(isNative=true, namespace=JsPackage.GLOBAL, name="PageObject")
public class PageObject {
private PageObject PageObject() {}
// called by every single public method
@JsProperty(namespace=JsPackage.GLOBAL, name="PageObject")
private static native boolean __isDefined();
// each property has a native accessor
@JsProperty(name="some_property")
private static native String _getSomeProperty();
// each property also has an overlay method that checks __isDefined()
@JsOverlay
public static String getSomeProperty() {
return __isDefined() ? _getSomeProperty() : null;
}
// calling a function safely requires an additional check to see if it exists
@JsProperty(name="some_procedure")
private static boolean _hasSomeProcedure();
@JsMethod(name="some_procedure")
private static native void _someProcedure();
@JsOverlay
public static void someProcedure() {
if (__isDefined() && _hasSomeProcedure()) {
_someProcedure();
}
}
}
私はこれより良いを扱うJsInteropの一部が欠けていますか? JSNIを除く、使いやすいソリューションがありますか?