【问题标题】:How to de- and increase the font size with WKWebView?如何使用 WKWebView 去除和增加字体大小?
【发布时间】:2016-03-11 20:43:55
【问题描述】:

在 Safari 中,您可以增大和减小字体大小。 WKWebView 怎样才能达到同样的效果?

【问题讨论】:

    标签: fonts font-size wkwebview


    【解决方案1】:

    假设您有 fontUpdatedHeight 整数,它可以为您提供准确的字体大小。

    只需创建这样的字符串:

    NSString *jsString = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%lu%%'",(unsigned long)fontUpdatedHeight];
    

    并执行 NSString

    [self.WKWebView stringByEvaluatingJavaScriptFromString:jsString];
    

    【讨论】:

    • 这曾经很好用,但它从最新的 Xcode (Xcode8.3.2) 停止工作。有没有人面临同样的问题?有什么办法可以解决吗?
    • 我认为它没有停止。您应该再次检查您的代码吗?
    • 哦,真的吗?您使用的是哪个版本的 Xcode,您的设备的 iOS 版本是什么?我正在使用 XCode 8.3.2 和 iOS10.3.1。苹果开发者论坛上好像也有我这样的人(请拉到底部)forums.developer.apple.com/thread/51079
    • WKWebView 没有stringByEvaluatingJavaScriptFromString:jsString 方法;那是 UIWebView。
    • 它适用于 UIWebView 但不适用于 WKWebView 但 UIWebView 已贬值
    【解决方案2】:

    Inna 建议的代码过去可以工作,但从 iOS10.3 开始停止工作。我做了一些研究,发现我们需要对其稍作改动,只需将“%%”更改为单个“%”即可。

    所以JS代码应该是:

    let js = "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='\(fontSize)%'"
    

    我从 Apple 开发者论坛获得了此信息。 https://forums.developer.apple.com/thread/51079

    【讨论】:

    • 像魅力一样工作。谢谢+1
    【解决方案3】:

    斯威夫特5解决方案:

    WKNavigationDelegateviewDidLoad 中实现:

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

    【讨论】:

    • 这在 Xcode 12.4 Swift 5.2 中不起作用
    • @ĐứcBùi 尝试 chanje 注入 Js。可以通过修改js来修复
    猜你喜欢
    • 2013-04-03
    • 1970-01-01
    • 2017-10-07
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2019-12-27
    相关资源
    最近更新 更多