如何在webview_flutter中调用Freshdesk脚本

问题描述

我有一个如下所示的Freshdesk脚本,打开Webview时需要调用该脚本。

<script>
    window.fwSettings={
    'widget_id':XXXXXXX
    };
    !function(){if("function"!=typeof window.FreshworksWidget){var n=function(){n.q.push(arguments)};n.q=[],window.FreshworksWidget=n}}()
</script>
<script type='text/javascript' src='https://ind-widget.freshworks.com/widgets/XXXXXXX.js' async defer></script>

以下是我的实现方法,但最终会出现一些错误。请帮忙。

//... Imports

const String freshDeskPageScript = '''
<!DOCTYPE html><html>
  <head>
    <script>
      window.fwSettings={
      'widget_id':XXXXXXXX
      };
      !function(){if("function"!=typeof window.FreshworksWidget){var n=function(){n.q.push(arguments)};n.q=[],window.FreshworksWidget=n}}()
    </script>
    <script type='text/javascript' src='https://ind-widget.freshworks.com/widgets/XXXXXXXX.js' async defer></script>
  </head>
</html>
''';

class FreshDesk extends StatefulWidget {
  @override
  _FreshDeskState createState() => _FreshDeskState();
}

class _FreshDeskState extends State<FreshDesk> {
  WebViewController _controller;

  @override
  void initState() {
    if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Fresh Desk'),),body: WebView(
        initialUrl: 'about:blank',javascriptMode: JavascriptMode.unrestricted,onWebViewCreated: (controller) async {
          _controller = controller;
          final String contentBase64 =
          base64Encode(const Utf8Encoder().convert(freshDeskPageScript));
          await controller.loadUrl('data:text/html;base64,$contentBase64');
        },);
  }
}

错误:-

I/chromium(11512): [INFO:CONSOLE(22)] "[object DOMException]",source: https://ind-widget.freshworks.com/widgetBase/widget.js (22)
I/chromium(11512): [INFO:CONSOLE(30)] "Uncaught SyntaxError: Failed to execute 'postMessage' on 'Window': Invalid target origin 'null' in a call to 'postMessage'.",source: https://ind-widget.freshworks.com/widgetBase/widget.js (30)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)