Добавление Javascript в WKWebView - PullRequest
0 голосов
/ 06 мая 2018

Привет, я знаю, что это кажется очень простым вопросом, но я хочу добавить этот JS в мой WebView:

<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=default&#038;ver=1.3.8'></script>

Теперь, очевидно, я знаю, что это HTML, но я не уверен, что поместить в'valuJavaScript 'для использования источника JS. Извините, если это не очень понятно - я новичок в Swift и JS. Спасибо!

Мой быстрый код:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    self.webView.evaluateJavaScript("<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=default&#038;ver=1.3.8'></script>") { (nil, error) in
        print(error)
    }
}

1 Ответ

0 голосов
/ 06 мая 2018

Использовать встроенный API WKUserScript inject JS:

let script =    """
                var script = document.createElement('script');
                script.src = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=default&#038;ver=1.3.8';
                script.type = 'text/javascript';
                document.getElementsByTagName('head')[0].appendChild(script);
                """
let userScript = WKUserScript(source: script, injectionTime: .atDocumentStart, forMainFrameOnly: true)

let contentController = WKUserContentController()
contentController.addUserScript(userScript)

let webViewConfiguration = WKWebViewConfiguration()
webViewConfiguration.userContentController = contentController

let webView = WKWebView(frame: CGRect.zero, configuration: webViewConfiguration)

forMainFrameOnly: булево значение, указывающее, должен ли скрипт вставляться только в основной кадр или во все кадры (включая iframe).

...