【问题标题】:Removing element from webView从 webView 中删除元素
【发布时间】:2018-12-04 07:30:46
【问题描述】:

我使用此代码删除了标题和其他内容,但问题是当我重新加载页面时,它会显示标题一秒钟然后将其删除。我希望代码即使在重新加载时也能删除标题。

private func removeElements(fromWebView webView: UIWebView) {
    self.elementsToRemove.forEach { self.removeElement(elementID: $0, fromWebView: webView) }
}

private func removeElement(elementID: String, fromWebView webView: UIWebView) {
    let removeElementIdScript = "var element = document.getElementById('\(elementID)'); element.parentElement.removeChild(element);"
    webView.stringByEvaluatingJavaScript(from: removeElementIdScript)

    let removeElementClassScript = "document.getElementsByClassName('\ . (elementID)')[0].style.display=\"none\";"
    webView.stringByEvaluatingJavaScript(from: removeElementClassScript)
}

【问题讨论】:

    标签: javascript ios swift webview


    【解决方案1】:

    如果您可以从 UIWebView 切换到 WKWebView 并且您的目标是 iOS 11+,您可以使用 WKContentRuleListStore 使用任意规则过滤内容(就像广告拦截器一样)。这是一个从 stackoverflow 网站中删除顶部栏的示例:

    import UIKit
    import WebKit
    
    let contentRules = """
    [
      {
        "trigger": {
          "url-filter": ".*"
        },
        "action": {
          "type": "css-display-none",
          "selector": "div.topbar"
        }
      }
    ]
    """
    
    class ViewController: UIViewController {
      @IBOutlet weak var webView: WKWebView!
    
      override func loadView() {
        super.loadView()
    
        let request = URLRequest(url: URL(string: "https://stackoverflow.com")!)
        WKContentRuleListStore.default().compileContentRuleList(forIdentifier: "ContentBlockingRules", encodedContentRuleList: contentRules) { rulesList, error in
          if let error = error {
            print(error)
            return
          }
          guard let rulesList = rulesList else { return }
          let config = self.webView.configuration
          config.userContentController.add(rulesList)
          self.webView.load(request)
        }
      }
    }
    

    您可以找到更多关于内容屏蔽规则here

    【讨论】:

      猜你喜欢
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 2020-01-05
      • 2013-02-14
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多