纸张输入自动完成无法填写
paper-input autocomplete fails to fill
聚合物 1.0
Chrome 50.0.2661.102
我正在尝试启用 chrome 纸张输入自动填充。选择输入时,会出现标准的适当 chrome 自动填充提示列表,但是从列表中选择可用名称或电子邮件不会填充输入,它只会关闭 chrome 自动填充列表。
<paper-input
id="email"
name="email"
label="Email"
type="email"
autocomplete="email"
></paper-input>
<paper-input
id="password"
name="password"
label="Password"
type="password"
autocomplete="current-password"
></paper-input>
尝试将您的输入包装在没有属性的表单标签中。像这样:
<form>
<paper-input
id="email"
name="email"
label="Email"
type="email"
autocomplete="email"
></paper-input>
<paper-input
id="password"
name="password"
label="Password"
type="password"
autocomplete="current-password"
></paper-input>
</form>
要使其正常工作,您需要切换到阴影 DOM,因为目前 (8-2-2018),浏览器不支持自动填充阴影 DOM。 Polymer 开发人员在以下错误跟踪器中请求此支持:
- https://bugs.webkit.org/show_bug.cgi?id=172567
- https://bugs.chromium.org/p/chromium/issues/detail?id=746593
- https://github.com/PolymerElements/paper-input/issues/554
- https://github.com/PolymerElements/iron-form/issues/197
- https://vlukashov.github.io/polymer-forms/#custom-in-shadow
要使其与 shady DOM 一起工作,请将以下代码放在 webcomponents-loader.js
脚本上方:
<script>
// Force all polyfills on
if (window.customElements) window.customElements.forcePolyfill = true;
ShadyDOM = {
force: true
};
function idToChainedClass(poly, _this) {
if (ShadyDOM) {
const allElements = poly.dom(_this.root).querySelectorAll('*');
let id;
for (var x = 0, len = allElements.length; x < len; x++) {
if (allElements[x].id) {
id = allElements[x].id;
allElements[x].removeAttribute('id');
allElements[x].classList.add(id);
_this.$[id] = poly.dom(_this.root).querySelector('.' + id);
}
}
}
}
</script>
<script src="bower_components/webcomponentsjs/webcomponents-loader.js"></script>
并在 ready()
中使用 idToChainedClass
函数,只要你看到这样的错误:
[DOM] 找到 x 个具有非唯一 ID 的元素 #input
您还可以随机化 ID 以使其独一无二。遵循 paper-input 提供的技术:
https://github.com/PolymerElements/paper-input/pull/609/files
聚合物 1.0 Chrome 50.0.2661.102
我正在尝试启用 chrome 纸张输入自动填充。选择输入时,会出现标准的适当 chrome 自动填充提示列表,但是从列表中选择可用名称或电子邮件不会填充输入,它只会关闭 chrome 自动填充列表。
<paper-input
id="email"
name="email"
label="Email"
type="email"
autocomplete="email"
></paper-input>
<paper-input
id="password"
name="password"
label="Password"
type="password"
autocomplete="current-password"
></paper-input>
尝试将您的输入包装在没有属性的表单标签中。像这样:
<form>
<paper-input
id="email"
name="email"
label="Email"
type="email"
autocomplete="email"
></paper-input>
<paper-input
id="password"
name="password"
label="Password"
type="password"
autocomplete="current-password"
></paper-input>
</form>
要使其正常工作,您需要切换到阴影 DOM,因为目前 (8-2-2018),浏览器不支持自动填充阴影 DOM。 Polymer 开发人员在以下错误跟踪器中请求此支持:
- https://bugs.webkit.org/show_bug.cgi?id=172567
- https://bugs.chromium.org/p/chromium/issues/detail?id=746593
- https://github.com/PolymerElements/paper-input/issues/554
- https://github.com/PolymerElements/iron-form/issues/197
- https://vlukashov.github.io/polymer-forms/#custom-in-shadow
要使其与 shady DOM 一起工作,请将以下代码放在 webcomponents-loader.js
脚本上方:
<script>
// Force all polyfills on
if (window.customElements) window.customElements.forcePolyfill = true;
ShadyDOM = {
force: true
};
function idToChainedClass(poly, _this) {
if (ShadyDOM) {
const allElements = poly.dom(_this.root).querySelectorAll('*');
let id;
for (var x = 0, len = allElements.length; x < len; x++) {
if (allElements[x].id) {
id = allElements[x].id;
allElements[x].removeAttribute('id');
allElements[x].classList.add(id);
_this.$[id] = poly.dom(_this.root).querySelector('.' + id);
}
}
}
}
</script>
<script src="bower_components/webcomponentsjs/webcomponents-loader.js"></script>
并在 ready()
中使用 idToChainedClass
函数,只要你看到这样的错误:
[DOM] 找到 x 个具有非唯一 ID 的元素 #input
您还可以随机化 ID 以使其独一无二。遵循 paper-input 提供的技术:
https://github.com/PolymerElements/paper-input/pull/609/files