Отключите загрузку таблиц стилей в UIWebView и / или WKWebView - PullRequest
0 голосов
/ 27 апреля 2018

Я абсолютно все перепробовал с этим. Я прочитал каждую яблочную статью и нигде не могу найти, как отключить загрузку CSS (Styling) в устаревшем UIWebView или новом WKWebView. Я не возражаю против того, какой веб-вид я использую, пока он может этого достичь.

Я пробовал WKPreferences() и WKWebViewConfiguration, и оба не имеют члена userStyleSheetEnabled.

Я упомянул эту статью о яблоке https://developer.apple.com/documentation/webkit/webpreferences/1536396-userstylesheetenabled?

Кто-нибудь знает ответ и как этого добиться на Swift 4?

1 Ответ

0 голосов
/ 28 апреля 2018

Класс WebView, на который вы ссылались, очень старый и устарел. Если вам нужно добавить веб-просмотр в ваше приложение, используйте WKWebView. Этот ответ работает с iOS> = 11 и macOS> = 10.13.

Вам нужно добавить WKContentRuleList в конфигурацию WKWebView. Они аналогичны блокировщикам содержимого Safari (например, блокировщикам рекламы), которые вы, возможно, уже установили на свой телефон:

// This should ideally be in a file but we're using string for convenience
let jsonRuleList = """
[{
    "trigger": {
        "url-filter": ".*",
        "resource-type": ["style-sheet"]
    },
    "action": {
        "type": "block"
    }
}]
"""

// Compile the content-blocking list
WKContentRuleListStore.default().compileContentRuleList(forIdentifier: "blockStyleSheet", encodedContentRuleList: jsonRuleList) { list, error in
    guard error == nil else { print(error!.localizedDescription); return }
    guard let list = list else { return }

    // Add the stylesheet-blocker to your webview's configuration
    let configuration = WKWebViewConfiguration()
    configuration.userContentController.add(list)

    // Adding the webview to the view. Nothing to see here
    self.webView = WKWebView(frame: self.view.bounds, configuration: configuration)
    self.view.addSubview(self.webView)

    // Let's try Apple's website without CSS
    let request = URLRequest(url: URL(string: "https://www.apple.com")!)
    self.webView.load(request)
}

Результат:

Apple's website without stylesheet

Ссылки

...