javascript - Google 地方信息覆盖自动完成关闭
问题描述
我在我网站上的地址输入中使用 Google Places API:
<input type="text" name="street[]" id="street1" autocomplete="none" />
但是,一旦加载了 Google 地方信息,它就会将我的 autocomplete="none" 替换为 autocomplete="off"。问题是谷歌浏览器与“关闭”值不兼容并继续显示自动填充建议。有没有什么办法解决这一问题 ?
谢谢 !
解决方案
这是一种适用于所有浏览器的方法:
TL;博士
将您的输入字段名称和字段 ID 重命名为不相关的名称,例如'data_input_field_1'
. 然后将‌
字符添加到标签的中间。这是一个非打印字符,因此您不会看到它,但它会诱使浏览器不将该字段识别为需要自动完成的字段,因此不会显示内置的自动完成小部件!
细节
几乎所有浏览器都使用字段名称、id、占位符和标签的组合来确定该字段是否属于可以从自动完成中受益的一组地址字段。因此,如果您有一个<input type="text" id="address" name="street_address">
几乎所有浏览器都会将该字段解释为地址字段的字段。因此,浏览器将显示其内置的自动完成小部件。梦想是使用该属性autocomplete="off"
会起作用,不幸的是,现在大多数浏览器都不服从该请求。
所以我们需要使用一些技巧来让浏览器不显示内置的自动完成小部件。我们将这样做的方法是欺骗浏览器,使其相信该字段根本不是地址字段。
首先将id和name属性重命名为不会泄露您正在处理与地址相关的数据的内容。因此,与其使用<input type="text" id="city-input" name="city">
,不如使用类似的东西<input type="text" id="input-field-3" name="data_input_field_3">
。浏览器不知道 data_input_field_3 代表什么。但你做了。
如果可能,不要使用占位符文本,因为大多数浏览器也会考虑到这一点。如果您必须使用占位符文本,那么您必须发挥创意并确保您没有使用任何与地址参数本身相关的词语(例如City
)。使用类似的东西Enter location
可以解决问题。
最后一个参数是附加到字段的标签。但是,如果您像我一样,您可能希望保持标签完好无损并向您的用户显示可识别的字段,例如“地址”、“城市”、“州”、“国家”。好吧,好消息:你可以!实现这一点的最佳方法是插入一个零宽度非连接字符‌
作为标签中的第二个字符。所以替换<label>City</label>
为<label>C‌ity</label>
. 这是一个非打印字符,因此您的用户会看到City
,但浏览器会被欺骗C ity
而无法识别该字段!
任务完成!如果一切顺利,浏览器不应再在这些字段上显示内置地址自动完成小部件!
希望这对您的努力有所帮助!
推荐阅读
- python-3.x - Python将文件从URL添加到本地文件中的文件
- openid-connect - 我可以将本地 Active Directory 的任何属性添加到 ADFS 中的 ID 令牌吗?
- sql - postgreSQL:试图过滤掉显示相同位置但时间戳略有不同的重复行?
- python - 生成满足约束(逻辑条件)的点集
- asp.net - 通过电子邮件地址查找 id 的最佳方法
- c++11 - 据我了解,这个 lambda 调用应该是无效的,但它不会崩溃。为什么?
- microsoft-graph-api - 如何将相关 ID 传递给 IHttpProvider?
- vue.js - 尝试 npm run serve 时如何修复“找不到此相关模块:* ./src/main.js in multi ...”错误
- dart - 用颤振画线
- python-3.x - 连续键错误