Как вставить CSS из URL в WKWebView, хотя контент HTML из URL успешно загружен - PullRequest
0 голосов
/ 30 октября 2018

Я искал и нашел много сообщений, где я получаю решение для загрузки файла CSS из пакета или из строки. Но мой CSS-файл сохранен на нашем сервере. Я хочу загрузить CSS из URL. Я пробовал много способов, но у меня это не сработало. Хотя я могу вставить CSS из того же URL-адреса в UIWebView в коде Objective C, но я столкнулся с проблемой при попытке добиться того же в WKWebView в SWIFT. Я думаю, что я делаю некоторую синтаксическую ошибку при написании тега HTML. Пожалуйста, помогите мне

Вот код Objective C:

NSString *html = [NSString stringWithFormat:@"<link type=\"text/css\" href=\"%@\" rel=\"stylesheet\" /> %@<br>", htmlData.cssStr,[htmlData.contentsArr objectAtIndex:slideNo]];
NSLog(@"html .%@", html);
[webview loadHTMLString:html baseURL:nil];

htmlData.cssStr: это веб-ссылка

Как и в большинстве решений, CSS вставляется в SWIFT в func webView (_ webView: WKWebView, навигация didFinish: WKNavigation!). Поэтому я также вызываю insertContentsOfCSSFile из didFinish из WKWebView. Как я пробовал в SWIFT это:

func insertContentsOfCSSFile(into webView: WKWebView) {

    let cssString = try! String(contentsOf: URL(string:  self.htmlData.cssStr)!).trimmingCharacters(in: .whitespacesAndNewlines)
    print("cssString", cssString)
    let jsString = "var style = document.createElement('style'); style.innerHTML = '\(cssString)'; document.head.appendChild(style);"
        webView.evaluateJavaScript(jsString, completionHandler: nil)

}

1 Ответ

0 голосов
/ 31 октября 2018

В вашем HTML вам нужны родительские теги, такие как HTML, Head, Body и т. Д. Пожалуйста, попробуйте следующий код. и изменения по вашему желанию.

NSString *bodyTag = [NSString stringWithFormat:@"<body><div id='main-div'>%@</div></body>",[htmlData.contentsArr objectAtIndex:slideNo]]; // Pass Var -> body value
NSString *css = [NSString stringWithFormat:@"<link type=\"text/css\" href=\"%@\" rel=\"stylesheet\" />", htmlData.cssStr];

NSString *htmlString = [NSString stringWithFormat:@"<!DOCTYPE html><html xmlns='https://www.w3.org/1999/xhtml'><head>  <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /><meta name = \"viewport\" content = \"width = 320, initial-scale = 1.0, user-scalable = yes\"><link href=\"%@\" rel=\"stylesheet\" type=\"text/css\" /></head>%@</html>", css, bodyTag]; // Pass Var -> css url and bodyTag 
...