При следующей настройке я могу запустить свое приложение на симуляторе, и таблица стилей будет правильно применена к содержимому. Однако выполнение точно такого же кода на устройстве приводит к игнорированию таблицы стилей.
Как мне настроить WKWebView
:
let contentController = WKUserContentController()
let userScript = WKUserScript(source: "my script goes here",
injectionTime: .atDocumentStart,
forMainFrameOnly: false)
contentController.addUserScript(userScript)
let configuration = WKWebViewConfiguration()
configuration.userContentController = contentController
webView = WKWebView(frame: .zero, configuration: configuration)
// Finish setting up & running web view here
В приведенном выше разделе изменение injectionTime
на .atDocumentEnd
и forMainFrameOnly
на true
не имеет никакого эффекта.
И упрощенный файл index.html, который довольно пуст:
<html>
<head>
<title>Style This Page</title>
</head>
<link rel="stylesheet" type="text/css" href="style.css" />
<body onload="runScript()">
<div id="scriptAttachesHere"></div>
<script>
let script
window.onload = function() {
let options = { }
script = new window.SCRIPT.Name(document.getElementById('scriptAttachesHere'), options);
}
</script>
</body>
</html>
И фрагмент кода из таблицы стилей:
.script-container .devices .contentContainer::before { height: unset !important; }
Все имена были замаскированы, поэтому вероятность того, что я сделал это неправильно, возможна.