【问题标题】:How to manipulate HTML in Flutter webview?如何在 Flutter webview 中操作 HTML?
【发布时间】:2021-01-08 01:07:50
【问题描述】:

我正在使用 Flutter webview 加载网站。但我想在加载时替换 HTML 元素。例如:

<span class="name">Replace text</span>

怎么办?

【问题讨论】:

  • 您好,您可以将处理程序附加到加载事件document.addEventListener("DOMContentLoaded", function() { // do my replacement });
  • @IronMan Flutter webview 怎么办?

标签: javascript html flutter dart flutterwebviewplugin


【解决方案1】:

所以,这取决于你使用什么库来加载你的 webview。

我使用webview_flutter_plus (https://pub.dev/packages/webview_flutter_plus) 取得了一些成功。

有了这个,你只需要等待你的 html 加载并注入一些 javascript 来修改你想要的任何 html。

像这样:

Widget build(BuildContext context) {
    return WebViewPlus(
        initialUrl: myUrl,
        javascriptMode: JavascriptMode.unrestricted,
        onWebViewCreated: (WebViewPlusController webViewController) {
            _webViewController = webViewController;
        },
        onPageFinished: (String url) {
            _webViewController.evaluateJavascript('document.querySelector(".name").innerHTML = "new text";');
        }
   }
}

【讨论】:

  • 亲爱的@Didier Prophete 我使用这种方式,但似乎评估jave脚本需要很长时间我可以做些什么
  • 是的。事实是,在 Flutter 中绑定原生应用程序中的 webview 确实需要一些时间(比如半秒)。在那之后,我认为 js 评估很好,但最初的时间是一个巨大的痛苦。不确定在颤振本身改善 webview 性能之前我们可以做很多事情(而且,我不确定颤振可以做任何事情。可能只是 webview 是一个昂贵的实例化类......)跨度>
  • 亲爱的有没有办法让我在评估之前不显示 webview,我的意思是评估发生在 onpagefinished 回调上,它自己需要一些时间来触发
  • 是的@kikicoder,这正是我在自己的代码中所做的。我基本上隐藏了 webview(我把它放在一个堆栈中,在一个启动页面下面)直到 onPageFinished 被调用......
猜你喜欢
  • 2021-08-10
  • 1970-01-01
  • 2020-10-14
  • 2021-09-26
  • 1970-01-01
  • 2017-09-25
  • 1970-01-01
  • 2021-11-02
  • 2020-01-23
相关资源
最近更新 更多