You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter WebView如何移除页眉页脚?旧方法因版本升级失效

Flutter WebView升级后移除网页页眉页脚的解决方案

针对webview_flutter库升级后旧方法失效的问题,下面是适配新版本的可行实现方案:

核心要点

新版本的webview_flutter对JS相关API做了调整,必须满足两个前提才能成功隐藏元素:

  1. 开启JavaScript支持
  2. 等待页面DOM完全加载后再执行隐藏元素的JS代码

修改后的完整代码

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

class SportybetTips extends StatefulWidget {
  const SportybetTips({super.key});

  @override
  State<SportybetTips> createState() => _SportybetTipsState();
}

class _SportybetTipsState extends State<SportybetTips> {
  late final WebViewController controller;

  @override
  void initState() {
    super.initState();
    controller = WebViewController()
      // 必须启用JavaScript,否则无法执行隐藏元素的代码
      ..setJavaScriptMode(JavaScriptMode.unrestricted)
      // 监听页面加载完成事件,确保DOM已渲染
      ..setNavigationDelegate(NavigationDelegate(
        onPageFinished: (String url) {
          _hidePageElements();
        },
      ))
      ..loadRequest(Uri.parse('https://accessbettingtips.com/sportybet/'));
  }

  // 执行JS代码隐藏页眉和页脚
  void _hidePageElements() {
    // 隐藏header标签对应的元素
    controller.runJavaScript("""
      const header = document.getElementsByTagName('header')[0];
      if (header) header.style.display = 'none';
    """);
    // 隐藏footer标签对应的元素
    controller.runJavaScript("""
      const footer = document.getElementsByTagName('footer')[0];
      if (footer) footer.style.display = 'none';
    """);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Sportybet Betting Tips'),
      ),
      body: WebViewWidget(controller: controller),
    );
  }
}

关键说明

  • 旧代码里的evaluateJavascript已经被废弃,新版本改用runJavaScript执行无返回值的JS代码
  • 必须通过setJavaScriptMode开启JS权限,否则所有JS代码都会被屏蔽
  • 一定要在onPageFinished回调里执行隐藏逻辑,否则页面还没加载完成,找不到对应的header/footer元素
  • 添加空值判断可以避免页面没有对应元素时出现JS报错,提升稳定性

内容的提问来源于stack exchange,提问作者Bull Marketing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 02:25:16