HTML 输入自动完成在 WKWebview 中不起作用

Posted

技术标签:

【中文标题】HTML 输入自动完成在 WKWebview 中不起作用【英文标题】:HTML Input autocomplete not working in WKWebview 【发布时间】:2018-04-23 20:46:43 【问题描述】:

启用自动完成的输入在移动 Safari 中打开时可以正常工作,但在 WKWebview (ios 11.3) 中加载时不能正常工作。这是已知的限制吗?

【问题讨论】:

你使用的是Ionic之类的框架吗? 怎么不工作? 无框架。只是在 Safari 上使用 autocomplete="email" @Ryan 的普通 html 我在键盘上收到电子邮件建议,在 WKWebview 它只是不提供任何东西 【参考方案1】:

https://developer.apple.com/documentation/security/password_autofill/enabling_password_autofill_on_an_html_input_element?language=objc

尝试使用以下格式让 html 自动填充您的字段

<input id="user-text-field" type="email" autocomplete="username"/>

【讨论】:

如果您使用电子邮件作为用户名自动填充,这可以正常工作,但如果您只想要他们的电子邮件地址(即不作为用户名)怎么办? 那么您就不会使用 PasswordAutofill API。只需询问他们的电子邮件地址并将其标记为如此。 AFAIK,Apple 不允许我们在 WKWebview 中使用 Autofill,因为该应用程序可能会窃取您的信息。 嗯,最后我检查了一下,这不是真的。这完全取决于 html 页面的外观。【参考方案2】:

我知道我参加聚会迟到了,但我很难找到解决这样一个老问题的方法,所以我想分享一下,因为这在 Google 搜索结果中仍然很高。

我想要的自动填充是让 WKWebView 自动完成保存的用户名和密码以便于登录。但是,这可能会给用户带来安全风险,因此您必须向 iOS 应用程序添加“关联域”权利,告诉它可以信任哪些域/子域,并且您必须将 JSON 文件添加到网站服务器的 wwwroot/.well-known 目录,以证明您控制了您在 WKWebView 中显示的站点。完成后,系统会自动建议用户名/密码,就像在 Safari 中一样。

这是 Apple 文档:https://developer.apple.com/documentation/xcode/supporting-associated-domains

总结一下我采取的步骤,在 XCode 中,我转到我的应用程序目标中的“签名和功能”选项卡,单击“+ 功能”按钮,添加关联域,并将条目放入新创建的所有列表中我的子域:

webcredentials:example.com
webcredentials:www.example.com
webcredentials:othersubdomain.example.com

然后在我的网络服务器上,我在 .well-known 目录中添加了一个名为“apple-app-site-association”(无扩展名)的文件,其内容如下:


  "webcredentials": 
    "apps": [ "ABCDE12345.com.example.myapp" ]
  

(其中标识符的格式为&lt;Application Identifier Prefix&gt;.&lt;Bundle Identifier&gt;)。然后我浏览到https://www.example.com/.well-known/apple-app-site-association 以确保json 显示在浏览器中。

注意:我使用 ASP.Net Core MVC,并且该文件没有显示在浏览器中,因为它没有使用可识别的文件扩展名。我找到了几种解决方法 - 我选择向文件添加文件扩展名,然后在 startup.cs 中使用重写规则,以便 Apple 可以在不提供请求扩展名的情况下找到文件。您可以在asp.net core - How to serve static file with no extension 找到更多相关信息

【讨论】:

以上是关于HTML 输入自动完成在 WKWebview 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Google地图自动填充功能在Cordova iOS上使用WKWebView失败

在 UIWebView/WKWebview 中禁用自动完成

在 WKWebView 中填充输入文本字段

如何在 Swift-Wkwebview 上自动填写用户名和密码?

Emmet 自动完成功能在 JSX 中不起作用

在 WKWebView 中加载本地文件在设备中不起作用