首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android WebView 隱藏網頁頂部廣告:JS 注入屏蔽廣告 URL 方案

     編輯:程式設計疑難解答

需求:WebView 加載頁面後,隱藏頂部廣告區塊。最簡潔方案是通過 `WebViewClient` 攔截請求或注入 JS 移除廣告 DOM。

方案一:JS 注入移除 (推薦靈活)

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        // 注入 JS 隱藏廣告容器
        String js = "javascript:(function() { " +
            "var ad = document.querySelector('.ad-header, #top-banner, [id*=\"ad\"]'); " +
            "if (ad) ad.style.display = 'none'; " +
            "})()";
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            view.evaluateJavascript(js, null);
        } else {
            view.loadUrl(js);
        }
    }
});

方案二:`shouldInterceptRequest` 攔截廣告請求 (源頭阻斷)

webView.setWebViewClient(new WebViewClient() {
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
        String url = request.getUrl().toString();
        // 匹配廣告域名/路徑關鍵字
        if (url.contains("ads.") || url.contains("/ad/") || url.matches(".*\\.ad\\..*")) {
            return new WebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes()));
        }
        return super.shouldInterceptRequest(view, request);
    }
});

方案對比

進階:結合開源廣告過濾規則

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
方案優點缺點
JS 注入靈活、可針對具體 DOM、不影響其他資源加載頁面渲染後才隱藏,可能閃現
請求攔截源頭阻斷、節省流量、無閃現需維護廣告 URL 規則、可能誤殺