iOS 上的奇怪 PlatformException FWFEvaluateJavaScriptError with WebView

问题描述 投票:0回答:1

我已经发布了一个 Flutter iOS 应用程序,我需要在其中注入 JavaScript 来解决 Flutter 中的一个错误(我现在没有指向该错误的链接)。事实上,当您使用

window.pushstate()
API 时,当 url 发生变化时,您不会获得更新。

我构建了一个小 hack 来获取有关更改的信息,但这似乎会导致异常。因为我只有这个疯狂的短堆栈跟踪,所以我不确定如何修复它。

PlatformException: PlatformException(FWFEvaluateJavaScriptError, Failed evaluating JavaScript., Instance of 'NSError', null)
  File "web_kit_api_impls.dart", line 1013, in WKWebViewHostApiImpl.evaluateJavaScriptForInstances
  File "<asynchronous suspension>"
  File "webkit_webview_controller.dart", line 278, in WebKitWebViewController.runJavaScript

我认为这里的相关代码是我构建 webviewcontroller 的地方:

final pushStateSpyJavaScript = '''((history)=>{
  const org=history.pushState;
  history.pushState=(state,_,url)=>{
    org.apply(history, [state,_,url]);
    if(url) {
      window.flutter.postMessage(url.toString());
    }
  };
  addEventListener('popstate', (event) => window.flutter.postMessage(location.href.toString()));
})(window.history)''';

webViewController.addJavaScriptChannel('flutter', onMessageReceived: (message) {
  onUrlChanged(message.message);
});

webViewController.setNavigationDelegate(NavigationDelegate(
  onPageFinished: (url) {
    onUrlChanged(url);
    webViewController.runJavaScript(pushStateSpyJavaScript);
  },
));

你有没有看到一些不经意的错误?我在上面得到了很多例外。

因为我不是本地 iOS 开发人员,所以我不确定如何调试它。

ios flutter webview wkwebview
1个回答
0
投票

我刚遇到同样的错误。你找到任何解决方案了吗?

© www.soinside.com 2019 - 2024. All rights reserved.