在Safari中,用户可以使用“缩放”命令(例如Command +)来放大内容。这不仅扩大了内容(包括字体大小),而且还调整了内容以保留在窗口边距之间。
我想在macOS上使用WKWebView实现相同的功能,但是当在Web视图控件上使用loadRequest()
命令时,我不知道该怎么做。
我尝试了以下方法,但没有成功:
"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='150%'"
之类的javascript。似乎Mac OS版本的WKWebView不再支持webkitTextSizeAdjust
,请参见https://trac.webkit.org/changeset/145168/webkit。magnification
属性。这行得通,但是只是简单地放大(或最小化)了所有内容,而没有像Safari那样将内容调整为保持在控件宽度(视口)之间。请注意,我使用的是loadRequest()
,而不是loadHTMLString()
。
答案 0 :(得分:1)
我遇到了同样的问题,并找到了解决方案。您需要将JavaScript代码注入设置为WkWebView
配置。秤号需要在JavaScript代码中设置。
完整代码如下所示:
NSString *jScript = @"document.body.style.zoom = 0.8";
WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
WKUserContentController *wkUController = [[WKUserContentController alloc] init];
[wkUController addUserScript:wkUScript];
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
configuration.userContentController = wkUController;
WKWebView *webContentView = [[WKWebView alloc] initWithFrame:NSMakeRect(0, 0,sizeWidth, sizeHeight) configuration:configuration];
答案 1 :(得分:0)
作为注入JavaScript的替代方法(如@elsonpeng的公认答案所述),您还可以随时调整缩放级别,如下所示(快速):
webView.evaluateJavaScript("document.body.style.zoom = 1.5", completionHandler: nil)
这当然也可以与WKNavigationDelegate
结合使用,以在页面完全加载时执行脚本:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("document.body.style.zoom = 1.5", completionHandler: nil)
}
这种方法稍微灵活一些,但比代码注入要慢一些,具体取决于加载页面的复杂程度。