将 Javascript 添加到 WKWebView [英] Adding Javascript to WKWebView

查看:27
本文介绍了将 Javascript 添加到 WKWebView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道这似乎是一个非常简单的问题,但我想将此 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,但我不确定要在 'evaluateJavaScript' 中放入什么才能使用 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打印(错误)}}

解决方案

使用内置API WKUserScript注入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 = '文本/javascript';document.getElementsByTagName('head')[0].appendChild(script);"""让 userScript = WKUserScript(source: script, injectionTime: .atDocumentStart, forMainFrameOnly: true)让 contentController = WKUserContentController()contentController.addUserScript(userScript)让 webViewConfiguration = WKWebViewConfiguration()webViewConfiguration.userContentController = contentController让 webView = WKWebView(frame: CGRect.zero, 配置: webViewConfiguration)

<块引用>

forMainFrameOnly:一个布尔值,指示脚本应该只注入主框架还是所有框架(包括 iframe).

Hi I know this seems like a super simple question, but I want to add this JS to my 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>

Now obviously I know this is HTML, but I am not sure what to put into 'evaluateJavaScript' in order to use the JS source. Sorry if this isn't very clear - I'm new to both Swift and JS. Thanks!

My swift code:

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

解决方案

Use built-in 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: A Boolean value indicating whether the script should be injected only into the main frame or into all frames(including iframe).

这篇关于将 Javascript 添加到 WKWebView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆