【发布时间】:2019-10-04 10:27:41
【问题描述】:
我有一个 div id 作为campaign-nav 和一个class id 作为campaign-term-list 以及
我不想显示页眉、菜单和页脚。在 Android 中,我可以使用以下代码:(找到的 WebViewController android 代码:Display a part of the webpage on the webview android)
如何在 Flutter 中使用 WebViewController 插件显示网页的一部分?
view.getSettings().setJavaScriptEnabled(true);
view.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String URL)
{
view.loadUrl("javascript:(function() { " +
"var head = document.getElementsByClassName('header')[0].style.display='none'; " +
"var head = document.getElementsByClassName('blog-sidebar')[0].style.display='none'; " +
"var head = document.getElementsByClassName('footer-container')[0].style.display='none'; " +
"})()");
}
});
view.loadUrl("your url");
更新: Flutter 例子有;
final Completer<WebViewController> _controller = Completer<WebViewController>();
他们使用 _controller 作为;
new WebView(
initialUrl:
'h****s://mysite.com/campaing/',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
javascriptChannels: <JavascriptChannel>[
_toasterJavascriptChannel(context),
].toSet(),
onPageFinished: (String url) {
print('Page finished loading: $url');
//Here is I put a boolean variable so I can show a progress indicator
setState(() {
_loadedPage = true;
});
},
),
更新 2: 在我的网页中,我有如下所示的页脚。
<div id="footer">
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="footer-menu">
我把你的代码放在下面 _controller.complete(webViewController);部分。但仍然显示页脚。
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
webViewController.evaluateJavascript("document.getElementsByClassName('footer-menu')[0].style.display='none';");
},
当我尝试将 webViewController.evaluateJavascript 放入 onPageFinished 部分时,它找不到“.evaluateJavascript”部分。
更新 3: 完整代码:(不工作)
new WebView(
initialUrl: 'https://stackoverflow.com',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (controller){
_myController = controller;
},
javascriptChannels: <JavascriptChannel>[
_toasterJavascriptChannel(context),
].toSet(),
onPageFinished: (url){
print('Page finished loading: $url');
_myController.evaluateJavascript("document.getElementsByClassName('header')[0].style.display='none';");
setState(() {
_loadedPage = true;
});
},
),
【问题讨论】: