我不太确定你在哪里尝试在代码中调用 stringByEvaluatingJavaScriptFromString,你应该在 webView 完成加载后调用它,因为如果你尝试修改 UI HTML 页面(通过更改字体)甚至在网页完成加载之前运行您的 JavaScript 命令,尽管您的 JavaScript 代码运行,但它无法修改其组件的属性,因为它们可能尚未完成渲染。
因此,
第 1 步:
使您的 ViewController 成为您的 webView 的 navigationDelegate
webView.navigationDelegate = self
第 2 步:
将扩展添加到您的 ViewController 并确认 WKNavigationDelegate
extension ViewController : WKNavigationDelegate {
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
let changeFontFamilyScript = "document.getElementsByTagName(\'body\')[0].style.fontFamily = \"Impact,Charcoal,sans-serif\";"
webView.evaluateJavaScript(changeFontFamilyScript) { (response, error) in
debugPrint("Am here")
}
}
}
第 3 步:
注意使用 '\' 来转义 "document.getElementsByTagName(\'body\')[0].style.fontFamily = \"Impact,Charcoal,sans-serif\";" 中的特殊字符,如单引号 (') 和双引号 ("),您在上面的代码中缺少这些字符
第 4 步:
如果您的网页找不到指定的 FontFamily,请确保您提供适当的 FontFamilies 和选项(查看我指定的 3 个字体名称 Impact、Charcoal、sans-serif)
O/P
不带 NavigationDelegate(不运行 javaScript)
应用字体后
希望对你有帮助