天道酬勤,学无止境

Save for autofill dialog not showing up

I have an activity that shows username UI, after entering that and tapping on continue button shows the enter password UI. On entering password and tapping on login button finishes the current activity and launches a new activity. On my device I selected Google autofill service, so on finish of the 1st activity I want "save for autofill?" dialog to show up, but it isn't. I prepared my app by adding autofillHints and nothing else in my activity. Should I add anything for the dialog to pop up?

评论

Despite following the docs and adding autofillHints to my layouts, I was experiencing a similar behavior on the emulator where calls to AutofillManager.commit() were not triggering the save UI when using the Google Autofill Service.

FWIW, I switched from the emulator to a physical device and the save UI started triggering properly even though I made no changes to my implementation. In both cases I was signed into a Google Account and in both cases Google's sample debug autofill service was triggering the save UI correctly.

I noticed you said "device," so maybe this doesn't apply to you, but it might be worth a shot to test on a physical device if you're using the emulator and there's seemingly no other explanation as to why it wouldn't be showing.

I was having a similar issue to your case, kindly find the solution:

1- Make sure that you added the following permission to manifest:

    <uses-permission
    android:name="android.permission.BIND_AUTOFILL_SERVICE"
    tools:ignore="ProtectedPermissions" />

2- Let's say in your login screen you have three EditText (username, password, and captcha), So you MUST add android:importantForAutofill for all the edit texts in the screen. If you missed adding it (for example for captcha cause no need to save it), Unfortunately, the autofill dialog will not show up.

3- To save username and password you should add for both username editText and password editText:

android:importantForAutofill="yes"

for username editText you should add :

 android:autofillHints="username"

for password editText you should add :

 android:autofillHints="password"

NOTE: You should NOT use textNoSuggestions for text input type for the password:

 android:inputType="textPassword|textNoSuggestions"

Instead of that, you should use:

 android:inputType="textPassword"

4- you should exclude the unwanted editText (Captcha) so as not be saved, So you should add to the captcha editText:

 android:importantForAutofill="noExcludeDescendants"  

5- Here is a snippet of the code:

com.google.android.material.textfield.TextInputLayout
            android:id="@+id/usernameTextInputLayout"
            style="@style/TextInputStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/margin_16"
            android:layout_marginEnd="@dimen/margin_16"
            android:layout_marginBottom="@dimen/margin_16"
            app:endIconDrawable="@drawable/ic_username"
            app:endIconMode="custom"
            app:endIconTint="?attr/theme_primary">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/usernameEditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:autofillHints="username"
                android:hint="@string/hint_username"
                android:imeOptions="actionNext"
                android:importantForAutofill="yes"
                android:inputType="text"
                android:maxLines="1"
                android:textAlignment="viewStart" />

        </com.google.android.material.textfield.TextInputLayout>

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/passwordTextInputLayout"
            style="@style/TextInputStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/margin_16"
            android:layout_marginEnd="@dimen/margin_16"
            android:layout_marginBottom="@dimen/margin_16"
            app:endIconDrawable="@drawable/ic_password"
            app:endIconMode="custom"
            app:endIconTint="?attr/theme_primary">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/passwordEditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:autofillHints="password"
                android:hint="@string/hint_password"
                android:importantForAutofill="yes"
                android:inputType="textPassword"
                android:textAlignment="viewStart" />

        </com.google.android.material.textfield.TextInputLayout>

 <com.google.android.material.textfield.TextInputLayout
                android:id="@+id/captchaTextInputLayout"
                style="@style/TextInputStyle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="@dimen/margin_16"
                android:layout_marginEnd="@dimen/margin_16"
                android:layout_marginBottom="@dimen/margin_16"
                android:importantForAutofill="noExcludeDescendants"
                app:boxCornerRadiusTopEnd="0dp"
                app:boxCornerRadiusTopStart="0dp">

                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/captchaEditText"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/hint_captcha_input"
                    android:imeOptions="actionNext"
                    android:importantForAutofill="noExcludeDescendants"
                    android:inputType="numberDecimal"
                    android:maxLength="@integer/otp_input_length"
                    android:maxLines="1"
                    android:textAlignment="viewStart" />

            </com.google.android.material.textfield.TextInputLayout>

Make sure Autofill with google is enabled in settings on your device as well: System > Language & Input > Autofill Service > Choose google.

Depending on the device, it might be in a different nested settings page.

Also make sure to reads the docs on the API, if you want to create your custom autofill: https://developer.android.com/guide/topics/text/autofill

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • How to disable the new Autofill feature from Android Oreo for espresso tests
    Running tests on android devices with sdk 26 causes them to fail because of the new Autofill feature that hides the fields when espresso are trying to click them. Im running my tests on firebase test lab so I cannot disable them manually on my tests devices. Some images: 1. Password is visible before clicking username field. 2. After clicking username field password field is hidden by this Autofill dialog: 3. After login it shows another Fill dialog: Espresso cant click now password field since the autofill dialog is hiding my field and fail. Using AutofillManager#disableAutofillServices()
  • 阻止Chrome提示您从输入框中保存密码?(Prevent Chrome from prompting to save password from input box?)
    问题 Chrome最近更新了一个令人讨厌的弹出式窗口,该弹出式窗口是从地址栏中的图标开始的,并在用户提交表单时提示在页面上保存密码。 此页面上没有其他输入框,也没有其他浏览器提示您保存此密码,因此我不知道Chrome为什么这么做。 这是一个密码,因此在输入框中不应以纯文本形式显示,但它不是一个应该保存的密码-它不是登录凭据。 实际上,计算机用户不知道该密码非常重要-他人必须为其输入密码-因此,如果浏览器将其保存,那就不好了。 如何防止Chrome(和所有浏览器)提示保存密码? <form action="/..." method="post" onsubmit="return pwFormIsSubmittable();"> <p>Password: <input autofocus="" type="password" name="1409_password" style="width:100px" tabindex="1" autocomplete="off"></p> <div class="tabSubmitButtons"> <input type="button" name="event=default" value="Cancel" onclick="window.location='...'" tabindex="3">"); <input type="submit
  • 在用户名和密码上禁用Safari自动填充(Disabling Safari autofill on usernames and passwords)
    问题 您可能已经知道,无论是否设置autocomplete="off" ,Safari都有一个讨厌的自动填充错误,该错误会在其中填充电子邮件,用户名和密码字段。 这是一个基本形式: <form action="/" method="post"> <p> <label>E-mail</label> <input type="text" name="email" value="" /> </p> <p> <label>Password</label> <input type="password" name="password" value="" /> </p> </form> ... Safari会自动在页面加载时自动填充这些字段,做得好! 如果将autocomplete="off"放入字段和/或form元素,则Safari仍会自动填充这些字段: <form action="/" method="post" autocomplete="off"> <p> <label>E-mail</label> <input type="text" name="email" value="" autocomplete="off" /> </p> <p> <label>Password</label> <input type="password" name="password" value=""
  • Google Smart Lock dialog is not appearing in Android O devices
    I recently integrated GoogleSmartLock with my app. Somehow the save dialog is not coming up in Android O devices and the API is throwing following error. The Credentials API's save confirmation dialog has been disabled to avoid conflicts with the Android Autofill feature. This choice may be overridden via AuthCredentialsOptions.Builder.forceEnableSaveDialog()., resolution=null} I checked the latest release notes of the playservices and found out that following API can fix this problem. Auth.AuthCredentialsOptions.Builder forceEnableSaveDialog () But I am not sure how to use this api with
  • Chrome如何检测“信用卡”字段?(How does Chrome detect Credit Card fields?)
    问题 在某些形式中,Chrome浏览器自动填充功能会提示您使用信用卡自动填充功能。 编辑:添加屏幕截图。 这与浏览器自动完成功能不同。 您不必之前以相同的形式输入值。 我应该如何编写HTML表单,以便浏览器将它们检测为“信用卡”字段并触发此行为? 一个使用Stripe表单的示例将是理想的。 回答1 从这个答案https://stackoverflow.com/a/9795126/292060,看起来Chrome要么与字段名称上的正则表达式模式匹配,要么表单显式使用了x-autocompletetype属性,例如(本示例使用“ somename”,以避免混淆与名称匹配的问题): <input type="text" name="somename" x-autocompletetype="cc-number" /> 实际上,您可以同时选择匹配的名称和x-autocompletetype: <input type="text" name="ccnum" x-autocompletetype="cc-number" /> 屏幕快照中是否有输入框的视图来源? 这将显示它是否与名称或x-autocompletetype属性匹配。 我链接的答案有多个链接,以获取更多信息。 我在这里没有重复。 其他一些评论: 我知道Chrome会弹出一个问题,是否保存信用卡信息(我不会)
  • Chrome 自动填充涵盖了 Google Maps API v3 的自动填充(Chrome Autofill covers Autocomplete for Google Maps API v3)
    问题 我正在使用 Google Maps Javascript v3 在 HTML 输入字段上设置自动完成,如下所示: http://imgur.com/Rm6X2FI.png - (不带自动填充) 我遇到的问题是 Chrome 的自动填充覆盖了地图自动完成功能,如下所示: http://imgur.com/7a2QM7L.png - (带自动填充) 几个月前我在网上找到了一个解决方案(参考:禁用 Chrome 自动填充),但似乎这个解决方案不再有效。 <input type="text" name="address" id="address_fake" autocomplete="off" style="display:none"> <input type="text" name="address" id="address" autocomplete="off" placeholder="Address" /> 有什么办法可以阻止 Chrome 的自动填充显示在 Google 地图自动完成列表的顶部? 编辑:停止 Google chrome 自动填充输入并没有为我当前的问题提供解决方案。 问题在于输入字段上的 Chrome 自动填充下拉菜单,而不是自动填充自动填充值的输入字段。 回答1 这也让我完全疯了。 有同样的问题。 我们使用脚本来为用户提取字段值以供选择
  • 在离开网页之前进行未保存的更改之前警告用户(Warn user before leaving web page with unsaved changes)
    问题 我的应用程序中有一些带有表单的页面。 如何以某种方式保护表单,如果有人导航或关闭浏览器选项卡,则应提示他们确认他们确实要保留未保存的数据? 回答1 简短错误的答案: 您可以通过处理beforeunload事件并返回一个非null的字符串来做到这一点: window.addEventListener("beforeunload", function (e) { var confirmationMessage = 'It looks like you have been editing something. ' + 'If you leave before saving, your changes will be lost.'; (e || window.event).returnValue = confirmationMessage; //Gecko + IE return confirmationMessage; //Gecko + Webkit, Safari, Chrome etc. }); 这种方法的问题在于,提交表单也会触发unload事件。 通过添加要提交表单的标志,可以轻松解决此问题: var formSubmitting = false; var setFormSubmitting = function() { formSubmitting = true; }
  • 自动填充填充错误的字段(Autofill populating wrong fields)
    问题 我有一个带有结帐页面的网站,该页面一直运行良好。 最近,任何使用自动填充填写信息的客户都会将其电子邮件地址转储到公司字段中。 我们所做的任何更改都不会影响它。 我可以使用哪些其他工具来深入了解这一点? 回答1 OP 的问题可能已经解决(或者可能在最近的更新中再次出现!)但截至 2019 年初,您可以通过在chrome://flags设置show-autofill-type-predictions标志来诊断其中一些问题,重新启动 Chrome,然后查看相关输入的标题(工具提示文本)。 它会告诉您使用什么信息来猜测字段的“类型”,以及应该使用什么样的保存数据来填充它。 回答2 我们仍然不知道是什么导致了这个问题,但对于任何看到这一点的人,我们最终将该字段readonly以便自动填充不会填充它。 然后我们写了一些 JS,在焦点上,它变得活跃,用户可以手动填充它。 <input type="text" name="company" readonly="" onfocus="this.removeAttribute('readonly');"> 回答3 发现自己遇到了类似的问题,在这种情况下要使用 autocomplete 属性 <input type="text" name="fooBar" autocomplete="organization" > 用于 html
  • 在iOS中自动进行OTP验证?(Automatic OTP verification in iOS?)
    问题 有没有办法像iPhone那样从iPhone收件箱(SMS)到ios应用程序访问数据以进行自动OTP验证? 谢谢您的帮助。 回答1 苹果在iOS 12中引入了称为“ Security Code AutoFill 。 要在您的应用程序中使用此功能,只需设置UITextField的输入视图的textContentType属性oneTimeCode 。 otpTextField.textContentType = .oneTimeCode 注意:安全代码自动填充仅适用于系统键盘,不适用于自定义键盘。 WWDC视频 当您获得OTP时,它将看起来像这样: 回答2 更新 从iOS 12开始,Apple将在UITextField,UITextView和任何采用UITextInput协议的自定义视图上支持密码自动填充。 系统键盘将其上的textContentType设置为.oneTimeCode 1)使用代码 singleFactorCodeTextField.textContentType = .oneTimeCode 2)使用情节提要/ XIB 在storyboard/XIB选择UITextField / UITextView ,然后单击“属性”检查器。 转到文本输入特征,单击“内容类型”,然后选择一个时间码并完成。 操作系统将使用此UITextContentType设置自动从“消息
  • SiteSucker教程——受密码保护的网页下载方法
    SiteSucker for mac是Mac os平台上的一款帮助用户下载数据的mac下载工具,SiteSucker for mac绝对是网站的利器,不仅仅是下载网站的HTML源文件,他连网站整体架构以及下面的所有文本,程序文件,图片,视频,音频等数据一丝不漏的下载到Mac本地硬盘。sitesucker Mac版支持HTML文档、图片、背景、动画等更多下载。使用很简单,只要输入站点的URL然后点击开始就可以了。说到这呢,有朋友就问了如何这个网站手密码保护能否下载呢?答案是可以的,具体下载教程如下: 受密码保护的网站 某些服务器限制对某些内容的访问,要求用户使用有效的用户名和密码进行身份验证。 登录页面 安全站点通常提供一个登录页面,该页面要求用户在表单中输入用户名和密码。要从具有登录页面的站点下载文件,请执行以下操作: -启用网页设置下的“ 使用Web视图下载”选项。 -修改其他设置(例如,路径设置,限制设置等),以便仅下载所需的内容。 -输入您的网站网址。 -在“ 控制”菜单中选择“ 打开浏览器 ” 以显示SiteSucker的内置Web浏览器。 -在Web浏览器中,导航到登录页面。 -输入您的用户名和密码或使用自动填充功能(请参见下文)。 -导航到您要开始下载的页面,然后单击“ 下载”按钮。 警告:登录并下载网站之前,使用“ 路径
  • Unexpected Chrome Autofill Behaviour [disable chrome autofill]
    So like everyone else before me I am trying to disable chrome autofill. This explained to me why autocomplete off does not work: A user agent may allow the user to override an element's autofill field name, e.g. to change it from "off" to "on" to allow values to be remembered and prefilled despite the page author's objections, or to always "off", never remembering values. However, user agents should not allow users to trivially override the autofill field name from "off" to "on" or other values, as there are significant security implications for the user if all values are always remembered
  • iOS 11禁用密码自动填充附件视图选项?(iOS 11 disable password autofill accessory view option?)
    问题 到目前为止,我想退出iOS 11提供的新选项,即在应用程序中建议输入密码。 当我在iOS 11上运行该应用程序时,我在键盘上方获得了自动填充选项,而我的用户名和密码文本字段甚至都没有显示。 因此,我的问题是,如何才能一起禁用新的密码自动填充功能,以使键盘上的键完全不显示,并且总体行为与iOS 11之前的版本相同? 回答1 iOS 11和12和13-Swift 4.2和5 (已更新): if #available(iOS 12, *) { // iOS 12 & 13: Not the best solution, but it works. passwordTextField.textContentType = .oneTimeCode } else { // iOS 11: Disables the autofill accessory view. // For more information see the explanation below. emailTextField.textContentType = .init(rawValue: "") passwordTextField.textContentType = .init(rawValue: "") } iOS 11说明: 确保像这样设置所有UITextField对象。 例如
  • SiteSucker如何下载受密码保护的网站?
    SiteSucker for mac是Mac os平台上的一款帮助用户下载数据的mac下载工具,SiteSucker for mac绝对是网站的利器,不仅仅是下载网站的HTML源文件,他连网站整体架构以及下面的所有文本,程序文件,图片,视频,音频等数据一丝不漏的下载到Mac本地硬盘。sitesucker Mac版支持HTML文档、图片、背景、动画等更多下载。使用很简单,只要输入站点的URL然后点击开始就可以了。说到这呢,有朋友就问了,如果这个网站受密码保护能否下载呢?答案是可以的,具体下载教程如下: 受密码保护的网站 某些服务器限制对某些内容的访问,要求用户使用有效的用户名和密码进行身份验证。 登录页面 安全站点通常提供一个登录页面,该页面要求用户在表单中输入用户名和密码。要从具有登录页面的站点下载文件,请执行以下操作: -启用网页设置下的“ 使用Web视图下载”选项。 -修改其他设置(例如,路径设置,限制设置等),以便仅下载所需的内容。 -输入您的网站网址。 -在“ 控制”菜单中选择“ 打开浏览器 ” 以显示SiteSucker的内置Web浏览器。 -在Web浏览器中,导航到登录页面。 -输入您的用户名和密码或使用自动填充功能(请参见下文)。 -导航到您要开始下载的页面,然后单击“ 下载”按钮。 警告:登录并下载网站之前,使用“ 路径
  • 禁用Chrome自动填充(Disabling Chrome Autofill)
    问题 这个问题的答案是社区的努力。 编辑现有答案以改善此职位。 它目前不接受新的答案或互动。 我一直在遇到几种形式的chrome自动填充行为问题。 表单中的所有字段都具有非常通用和准确的名称,例如“电子邮件”,“名称”或“密码”,并且还设置了autocomplete="off" 。 自动完成标记已成功禁用了自动完成行为,该行为会在您开始键入时出现一个下拉列表,但并未更改Chrome自动将字段填充为的值。 除了chrome不能正确填充输入(例如用电子邮件地址填充电话输入)之外,这种行为是可以的。 客户对此有所抱怨,因此已证实它在多种情况下都在发生,而不是我在计算机上本地完成的操作的某种结果。 我能想到的唯一当前解决方案是动态生成自定义输入名称,然后在后端提取值,但这似乎是解决此问题的一种很怪异的方法。 是否有任何可更改自动填充行为的标记或怪癖可用于解决此问题? 回答1 2021年1月: autocomplete="off"现已按预期工作(已在Chrome 88 macOS上测试)。 2020年9月: autocomplete="chrome-off"禁用Chrome自动填充。 2015年原始答案: 对于新的Chrome版本,您只需在密码字段中输入autocomplete="new-password"就可以了。 我已经检查了,效果很好。 在此讨论中,从Chrome开发人员那里获得了提示
  • Chrome Autofill covers Autocomplete for Google Maps API v3
    I am using Google Maps Javascript v3 to setup autocomplete on an HTML input field like so: http://imgur.com/Rm6X2FI.png - (w/out autofill) The issue I'm having is that Chrome's Autofill covers up the Maps Autocomplete like this: http://imgur.com/7a2QM7L.png - (w/ autofill) I found a solution online a couple of months ago (ref: Disabling Chrome Autofill), but it seems that this solution no longer has any effect. <input type="text" name="address" id="address_fake" autocomplete="off" style="display:none"> <input type="text" name="address" id="address" autocomplete="off" placeholder="Address" />
  • 谷歌浏览器自动填充所有密码输入(Google chrome autofilling all password inputs)
    问题 我的问题 我必须打开 google 以自动填充我网站上的登录信息,但是它现在试图在我想编辑我的帐户信息或编辑其他用户帐户信息(作为管理员)时自动填充该登录数据。 它在奇怪的地方填充我的数据。 问题似乎是 Chrome 自动用一种密码填充任何输入,然后是它之前的任何输入(见下图) 。 如果我在它之前放一个选择框,它就不会自动填充。 我显然不想每次编辑用户时都必须经过并删除密码/电话。 我也不希望我的用户在编辑自己的帐户时必须这样做。 如何删除它? 我尝试过的(没有成功) 将 autocomplete="off" 添加到表单以及电话和密码输入。 将 value="" 添加到两个输入更改密码输入的名称=。 我尝试了密码、通行证、密码和奶酪(以防 chrome 取名) 通过 jquery .attr 添加 autocomplete="off" 我发现了什么 我发现谷歌可能故意忽略自动完成:谷歌忽略自动完成 我发现另一个用户发布了类似的问题,但该解决方案对我不起作用:禁用 Chrome 自动填充 我还发现另一个用户正在做一个涉及创建隐藏密码字段的工作,该字段将采用谷歌自动完成,我更喜欢更干净的解决方案,因为在我的情况下,我还需要在其上方隐藏输入以避免自动填充:禁用自动填充在 chrome 中不禁用自动完成 回答1 在带有 autocomplete 属性的 HTML5 中有一个名为
  • 如何防止用户在控制台中获取密码字段值(How to prevent a user from getting password field value in console)
    问题 我一直在帮助一些人使用他们的电脑并修理它们。 其中一个人问我在自动表单字段中存储密码的安全性。 我向他们展示了如何从控制台中的简单 jQuery 调用中检索密码的快速技巧。 在某些网站上工作时,我一直试图找出一种方法来防止使用此技巧来找出保存的密码是什么。 要了解我在说什么,如果您不知道,请尝试以下操作。 使用 jquery 导航到一个网站(或 jquerify 网站),然后打开自动填写表单或填写密码字段。 检查元素以显示密码 ID 字段或使用 jquery 调用该字段的某种方式在控制台中运行$('#password').val()并观察密码显示。 我想知道作为 Web 开发人员是否有某种方法可以防止在我的网站上使用它,但仍然允许使用它来获取站点代码中字段的值。 谢谢。 编辑 从 facebook 登录自动填写(为了安全而涂黑) 然后在 jquerifying 页面并在控制台中运行$jq('#pass').val()而不更改任何内容后(密码变黑以确保安全) 用例 用户 1 在公共计算机上,他们允许浏览器保存登录信息 用户 1 离开,用户 2 前往同一站点。 浏览器自动填写登录信息 用户 2 运行命令并获得密码的访问权限 回答1 简短的回答:没有。 从逻辑上讲,无法删除访问此字段中数据的能力并保留自动填充功能。 密码框的值就是密码,这就是你要提交的。
  • Autofill iOS12 alert message user to save password after login to the app first time?
    I'm implementing autoFill to my iOS app using this tutorial "iOS 12 Password Tools: Improving User Security and Experience" everything work fine but the iOS is not prompt me with UIAlert to save the password when I login for the first time. I want to ask how I can trigger the UIAlert to prompt the user to save the password to keychain first time?
  • 带有类似于 shell 命令行完成的 TAB 完成/自动填充的 Ajax 自动完成(或自动建议)?(Ajax autocomplete (or autosuggest) with TAB completion/autofill similar to shell command line completion?)
    问题 我正在实现 AJAX 自动完成/自动建议功能,我不仅想要执行与用户输入的内容类似的通常显示建议,而且我想让用户执行部分完成以节省输入。 所以,想象一下我的字典中有这些值:“绿苹果”、“绿梨”、“绿果”、“蓝天”、“蓝水”、“蓝醒”。 如果用户输入“g”,建议应该是“green apple”、“green pear”、“greenfruit”,我想让用户点击 TAB 或其他东西将他的查询更新为“green”,然后他们可以输入“a”,然后他们就会完成“green apple”。 我正在尝试在 linux shell 命令行完成后对此进行建模。 您能推荐一个可以执行此操作的控件/脚本吗? 还是对现有控件的修改/定制? 回答1 流行的自动完成插件(对于 jQuery、Scripty...)不支持这种特定类型的自动完成,因为通常这些插件会提供用于选择所需匹配项的下拉 UI。 因此,假设我们还没有现成的解决方案。 嘘。 编码它有多难? // takes a text field and an array of strings for autocompletion function autocomplete(input, data) { if (input.value.length == input.selectionStart && input.value.length == input
  • Chrome自动填充/自动填充功能,密码无值(Chrome Autofill/Autocomplete no value for password)
    问题 当您保存了某个站点的用户名和密码后,Chrome会自动填充该用户名和密码,但是,如果您尝试获取密码输入字段的值,则该字符串为空String,即使那里有值******。 如果您单击页面上的某处,则不会在此填充input type="password"的值。 这是html和console.log命令的Fiddle用户/密码。 在这里看不到它,但是可以在具有登录表单的每个页面上复制它,并且用户名和密码会在页面加载时自动填充。 如果在单击网站上的任何其他位置之前检查字段的值,则该字段将为空String。 在Firefox或Internet Explorer中不是这种情况,它将用密码填充input元素的值。 我正在使用Windows 7 Ultimate 64位操作系统,Google Chrome版本为48.0.2564.97 m 这是正常现象,错误还是? 更新: 如果单击F5重新加载页面并检查密码字段,则密码值将存在。 如果您单击Chrome左上角的重新加载按钮,则密码字段的值将为空字符串。 回答1 这似乎是Chrome中的错误。 当Chrome在初始页面加载时自动填充密码(但不刷新)时,该值会显示在屏幕上的表单字段中,但在Javascript中查询passwordField.value返回一个空字符串。 如果您依靠在Javascript中看到该值,则可以避免这样做。