1

我尝试动态删除元素,但删除的元素仍显示在屏幕上,并在单击元素时被删除。

这是我使用的代码

 onPageFinished: (url){
        removeAds(url);
      },
 void removeAds(String url){
      print("asdjkhjahsdk");
      //_controller.loadUrl('javascript: var ad= document.getElementById("_b04pct_2709847"); ad.parentNode.removeChild(ad);');
      _controller.evaluateJavascript('var ad= document.getElementById("_b04pct_2709847"); ad.parentNode.removeChild(ad);');

  }
4

3 回答 3

2

evaluateJavascript("document.getElementById('_b04pct_2709847').style.display='none';")

于 2020-01-11T05:32:20.220 回答
1

尝试这个!

evaluateJavascript("document.getElementsByClassName('_b04pct_2709847')[0].style.display='none';");

我猜你忘记了'[0]'。我尝试在加载页面之前隐藏元素。你成功了吗?

于 2020-12-28T19:19:24.113 回答
0

由于webview_flutter 3.0.0 这就是我这样做的方式

作为一个未来 controller = Completer<WebViewController>();

onProgress: (progress) {

        if (progress > 30) {
          //remove the element with class name
          controller.future.then((webviewController) => webviewController
              .runJavascript(
                  'document.getElementsByClassName("td-header-template-wrap")[0].remove();')
              .then(
                  (value) => debugPrint('Page finished running Javascript'))
              .catchError((onError) => debugPrint('$onError')));
        }
      },

我在 onProgress 中这样做是因为我希望 javascript 在整个页面加载完成之前只运行一次。这也可以在 onPageFinished 中完成。有时,在运行 javascript 之前标签不存在,这就是为什么首选在 onPageFinished 中执行此操作的原因。

于 2022-02-07T15:42:07.627 回答