gpt4 book ai didi

cocoa - 让 WebView 的行为与 Safari 完全相同

转载 作者:行者123 更新时间:2023-12-03 16:10:13 26 4
gpt4 key购买 nike

(经过编辑以更好地描述我给出的答案)

我在 InterfaceBuilder 中创建了一个非常简单的浏览器,由导航栏和 Web View 组成。

一切正常,除了当我尝试在 WebView 的输入字段之间切换时,焦点转到导航栏。

我假设我需要对响应者链做一些事情,但我一直无法弄清楚要做什么。

有什么建议吗?

谢谢,凯利

最佳答案

世界上可能没有人关心这个问题,但我会回答它,以防有人在某个时候需要这个。

正如我在评论中提到的,我正在使用卡布奇诺框架,但实际上遇到了 3 个不同的问题。

让我给你设置一下。

我正在创建一个嵌入 WebView 的 cocoa 应用程序,并加载一个包含卡布奇诺应用程序的页面。起初,字段之间的选项卡对于任何网页上的任何表单都不太有效。

  1. 正如我在评论中所说,如果您使用IB,您可以将窗口“initialFirstResponder”设置为webview,并且至少“正常”表单可以正常工作。卡布奇诺仍然没有。
  2. 第二个问题是 dom 事件中的 keyCode 和 charCode 与 cocoa 中的 WebView 和 Safari 中的不同。事实证明,有一种叫做“键盘怪癖”模式的东西。如果您在中查找 _needsKeyboardEventDisambiguationQuirks WebView ObjC 类源你会看到它对 Safari 进行了异常(exception)处理,将其关闭。它应该为旧版本的 WebKit 关闭它,但事实并非如此。请参阅webkit bug 32694为了解决这个问题,我必须做两件不同的事情。a) 覆盖 _needsKeyboardEventDisambiguationQuirks 使其返回 NOb) 如果重写该方法时 WebView 已实例化,则还需要调用 [[webviewinstancepreferences] _postPreferencesChangesNotification] 才能使其正常工作。这会让你的 WebView 像 Safari 一样发送 DOM 事件。

  3. 最后,cappuccino 查看用户代理字符串以确定如何处理某些内容。它正在检查 WebKit 和 Safari。我抄写了 safari 用户代理字符串并将其设置为 WebView 的自定义用户代理字符串。

    [mywebviewinstance setCustomUserAgent: @"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4"]

最后,一切都像在 Safari 中一样运行。

希望这对某人有帮助!

关于cocoa - 让 WebView 的行为与 Safari 完全相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376424/

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