Nic*_*ick 4 javascript webview flutter
我尝试使用webview evaluateJavascript并出现错误。WebView Controller有2个功能;evaluateJavascript, 和loadUrl。我在 中测试了两者onPageFinished: (url){},因此我可以初始化我的 javascript 代码。文档不清楚。但该错误告诉我缺少一些 pr 未在 webview 插件中实现的内容。我正在尝试加载页面并初始化一些基本的 javascript,以便我可以隐藏页面的某些部分。
如何使用Flutter webview评估Javascript?
\n\n错误:
\n\nSyncing files to device iPhone X...\nflutter: Page finished loading: https://stackoverflow.com/\n[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: PlatformException(evaluateJavaScript_failed, Failed evaluating JavaScript, JavaScript string was: \'javascript:(function() { var head = document.getElementsByClassName(\'top-bar js-top-bar top-bar__network _fixed\')[0].style.display=\'none\'; })()\'\nError Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=1, WKJavaScriptExceptionMessage=TypeError: undefined is not an object (evaluating \'document.getElementsByClassName(\'top-bar js-top-bar top-bar__network _fixed\')[0].style\'), WKJavaScriptExceptionColumnNumber=117, WKJavaScriptExceptionSourceURL=https://stackoverflow.com/, NSLocalizedDescription=A JavaScript exception occurred})\n#0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:564:7)\n#1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:302:33)\n<asynchronous suspension>\n#2 WebViewController.evaluateJavascript (package:web<\xe2\x80\xa6>\nApplication finished.\nRun Code Online (Sandbox Code Playgroud)\n\n代码:
\n\n class _WebViewExampleState extends State<WebViewExample> {\n WebViewController _myController;\n bool _loadedPage = false;\n\n @override\n void initState() {\n // TODO: implement initState\n super.initState();\n setState(() {\n _loadedPage = false;\n });\n }\n\n\n @override\n Widget build(BuildContext context) {\n return Scaffold(\n appBar: AppBar(\n backgroundColor: Colors.green,\n title: const Text(\n \xe2\x80\x99Stackoverflow\xe2\x80\x99,\n style: TextStyle(fontSize: 14),\n ),\n\n ),\n body: Builder(builder: (BuildContext context) {\n return new Stack(\n children: <Widget>[\n new WebView(\n initialUrl: \'https://stackoverflow.com\',\n javascriptMode: JavascriptMode.unrestricted,\n onWebViewCreated: (controller){\n _myController = controller;\n },\n javascriptChannels: <JavascriptChannel>[\n _toasterJavascriptChannel(context),\n ].toSet(),\n onPageFinished: (url){\n print(\'Page finished loading: $url\');\n\n _myController.evaluateJavascript("javascript:(function() { " +\n "var head = document.getElementsByClassName(\'top-bar js-top-bar top-bar__network _fixed\')[0].style.display=\'none\'; " +\n "})()");\n\n/*\n _myController.loadUrl("javascript:(function() { " +\n "var head = document.getElementsByClassName(\'top-bar js-top-bar top-bar__network _fixed\')[0].style.display=\'none\'; " +\n "})()");\n*/\n\n setState(() {\n _loadedPage = true;\n });\n },\n ),\n _loadedPage == false\n ? new Center(\n child: new CircularProgressIndicator(\n backgroundColor: Colors.green),\n )\n : new Container(),\n ],\n );\n }),\n\n );\n }\n\n JavascriptChannel _toasterJavascriptChannel(BuildContext context) {\n return JavascriptChannel(\n name: \'Toaster\',\n onMessageReceived: (JavascriptMessage message) {\n Scaffold.of(context).showSnackBar(\n SnackBar(content: Text(message.message)),\n );\n });\n }\n\n }\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
23727 次 |
| 最近记录: |