通过FlutterWebviewPlugin的实现,我想在一个小部件中显示一个特定的网站,但没有页眉和页脚。这在Flutter中是可能的吗?我猜在FlutterWebviewPlugin类中有一个函数。evalJavascript('some code '),但不知道如何使用这个函数。我可以添加javascript代码吗?
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
String url = "https://flutter.io/";
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Webview Example',
theme: ThemeData.dark(),
routes: {
"/": (_) => Home(),
"/webview": (_) => WebviewScaffold(
url: url,
withJavascript: true,
withLocalStorage: true,
withZoom: true,
)
},
);
}
}
class Home extends StatefulWidget {
@override
HomeState createState() => HomeState();
}
class HomeState extends State<Home> {
final webView = FlutterWebviewPlugin();
TextEditingController controller = TextEditingController(text: url);
@override
void initState() {
super.initState();
webView.close();
controller.addListener(() {
url = controller.text;
});
}
@override
void dispose() {
webView.dispose();
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("WebView"),
),
body: Center(
child: Column(
children: <Widget>[
Container(
padding: EdgeInsets.all(10.0),
child: TextField(
controller: controller,
),
),
RaisedButton(
child: Text("Open Webview"),
onPressed: () {
Navigator.of(context).pushNamed("/webview");
},
)
],
),
)
);
}
}
3条答案
按热度按时间bnlyeluc1#
我建议使用Flutter的官方WebView插件:webview_flutter
插件还有一个方法,可以使用
WebViewController.evaluateJavascript(String)
运行Javascript。建议在WebView.onPageFinished
回调后运行此方法。您的WebView小部件应如下所示。
这里有一个完整的示例,您可以尝试。
应用程序运行时的外观
qnzebej02#
wnavrhmk3#
您可以使用
flutter_inappwebview
插件(我是作者)并在UserScriptInjectionTime.AT_DOCUMENT_START
处注入一个UserScript
,以便在加载网页时隐藏或删除HTML元素(查看JavaScript - User Scripts official docs以了解用户脚本的详细信息)。由于我已经回答了here的类似问题,下面是一个代码示例,使用当前最新的版本6(6.0.0-beta.18)和删除了页眉和页脚HTML元素的URL https://getmobie.de/impressum:
对于您的用例,请在用户脚本js源代码中使用正确的CSS选择器来正确地获取和删除网页中的页眉和页脚HTML元素!
第一次