如何使用 WKWebView 取消和增加字体大小?
How to de- and increase the font size with WKWebView?
在 Safari 中,您可以增大和减小字体大小。如何使用WKWebView实现同样的效果?
假设您有 fontUpdatedHeight 整数,它可以为您提供准确的字体大小。
像这样创建字符串:
NSString *jsString = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%lu%%'",(unsigned long)fontUpdatedHeight];
并执行 NSString
[self.WKWebView stringByEvaluatingJavaScriptFromString:jsString];
Inna 建议的代码曾经有效,但从 iOS10.3 起就停止了。我做了一些研究,发现我们需要对它做一点改动,只是将“%%”改为单个“%”。
所以JS代码应该是:
let js = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='\(fontSize)%'"
我从 Apple Developer 论坛获得了此信息。
https://forums.developer.apple.com/thread/51079
Swift 5 解法:
实施 WKNavigationDelegate
并在 viewDidLoad
中:
webView.navigationDelegate = self
然后在 didFinish
中:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
let js = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='200%'"//dual size
webView.evaluateJavaScript(js, completionHandler: nil)
}
在 Safari 中,您可以增大和减小字体大小。如何使用WKWebView实现同样的效果?
假设您有 fontUpdatedHeight 整数,它可以为您提供准确的字体大小。
像这样创建字符串:
NSString *jsString = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%lu%%'",(unsigned long)fontUpdatedHeight];
并执行 NSString
[self.WKWebView stringByEvaluatingJavaScriptFromString:jsString];
Inna 建议的代码曾经有效,但从 iOS10.3 起就停止了。我做了一些研究,发现我们需要对它做一点改动,只是将“%%”改为单个“%”。
所以JS代码应该是:
let js = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='\(fontSize)%'"
我从 Apple Developer 论坛获得了此信息。 https://forums.developer.apple.com/thread/51079
Swift 5 解法:
实施 WKNavigationDelegate
并在 viewDidLoad
中:
webView.navigationDelegate = self
然后在 didFinish
中:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
let js = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='200%'"//dual size
webView.evaluateJavaScript(js, completionHandler: nil)
}