首页 > 解决方案 > 如何访问flutter web IFrameElement?

问题描述

下面的代码之前工作正常,但在更新 Flutter SDK 后它不再工作了。

我创建了一个这样的 iframe:

  ui.platformViewRegistry.registerViewFactory(
      viewId.toString(),
      (int id) => IFrameElement()
        ..src =
            "my_url"
        ..id = viewId
        ..style.border = 'none');

  js.context.callMethod('initIframe', [viewId, "SomeData"]);

在我的 index.html 中:

function initIframe(viewId, rawData) {
    var initiated = false;
    document.querySelectorAll("flt-platform-view").forEach(function (platformView) {
            var view = platformView.shadowRoot.children[1];
            if (view.id === viewId) {
                var iframe = view.contentWindow;
                if (iframe != null) {
                    initiated = true;
                    console.log("IFrame Found...!!")
                }
            }
        }
    );
    if (!initiated) setTimeout(function () {
        initIframe(viewId, rawData)
    }, 250);
}

以前一切都很好,但现在我发现这个查询没有孩子:

document.querySelectorAll("flt-platform-view")

我不知道flutter web是否有一些变化,但现在我无法让它工作。

标签: javascriptflutterdartflutter-web

解决方案


推荐阅读