gpt4 book ai didi

macos - 如何在 macOS 上使用 WKWebView 支持像 Safari 一样的 Zoom

转载 作者:行者123 更新时间:2023-12-04 13:44:21 37 4
gpt4 key购买 nike

在 Safari 中,用户可以使用缩放命令(如 Command +)放大内容。这不仅会放大内容,包括字体大小,还会调整内容以保留在窗口边距之间。

我想在 macOS 上使用 WKWebView 实现相同的功能,但是在使用 loadRequest() 时我不知道如何做到这一点Web View 控件上的命令。

我尝试了以下方法,但没有取得多大成功:

  • 注入(inject) javascript 之类的 "document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust='150%'" .看来webkitTextSizeAdjust macOS 版本的 WKWebView 不再支持,请参阅 https://trac.webkit.org/changeset/145168/webkit .
  • 使用 magnification属性(property)。这是有效的,但这只是放大(或最小化)所有内容,而不像 Safari 那样调整内容以保持在控件宽度(视口(viewport))之间。

  • 请注意,我正在使用 loadRequest() ,不是 loadHTMLString() .

    最佳答案

    我遇到了同样的问题,并找到了解决方案。您需要将 JavaScript 代码注入(inject)设置为 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];

    关于macos - 如何在 macOS 上使用 WKWebView 支持像 Safari 一样的 Zoom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51609390/

    37 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com