Удаление элемента из webView - PullRequest
0 голосов
/ 25 июня 2018

Я использовал этот код для удаления заголовка и других вещей, но проблема в том, что когда я перезагружаю страницу, она на секунду отображает заголовок, а затем удаляет его. Я хочу, чтобы код удалял заголовок даже при перезагрузке.

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)
}

1 Ответ

0 голосов
/ 25 июня 2018

Если вы можете переключиться с 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)
    }
  }
}

Подробнее о правилах блокировки контента здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...