Chrome 更新 73 - 具体化 CSS JS 触发器错误



在最新的Chrome Update 73之后,Materialize CSS 0.100.2的日期选择器,时间选择器和下拉列表不再工作,当您单击它时它会闪烁,然后消失。

知道如何解决这个问题吗?

我遇到了同样的问题。现在我做了一些更改以使其工作(这对我来说只是一个临时热修复程序)。

在具体化时.js(物化-v0.100.2 不是最小的):

1) 在第 1786 行有一个 setTimeout(带有注释"将单击关闭处理程序添加到文档"),其等待值为 0,将其更改为 100。

2) 在第 6558 行上,有一个绑定到日期选择器元素外部的单击。(带有注释"绑定文档事件"。将所有这些绑定放在一个等待时间为 500 毫秒的 setTimeout 中。

修复 1 用于选择,第二个用于日期选择器。

这是 Chrome 73 中的回归。我们已经发布了pickadate 3.6.1,它应该可以解决这个问题。

有关 Chrome 中的回归,请参阅 https://bugs.chromium.org/p/chromium/issues/detail?id=941910。

para timepicker comentar los siguiente en materialize.js

/** Hide when clicking or tabbing on any element except the clock and input
$doc.on('click.clockpicker.' + this.id + ' focusin.clockpicker.' + this.id, function (e) {
var target = $(e.target);
if (target.closest(self.popover.find('.picker__wrap')).length === 0 && target.closest(self.input).length === 0) {
self.hide();
}
});*/

我在 chrome 中找到了一个修复程序,你只需要使用它 示例:$("#dtFrom").off("focus")如果页面很慢,则需要放入setTimeout中,仅此而已

我遇到了同样的问题。虽然我正在使用angular2-materialize,但我相信这应该适用于直接使用materialize的人。

对我有用的解决方案是将具体化select输入包装为具有click侦听器的div,该侦听器仅调用event.stopPropagation()

<div (click)="$event.stopPropagation()">
<select materialize="material_select" [value]="selectValue" formControlName="someControl">
// options omitted (not relevant to answer)
</select>
</div>

我希望这对一些人有所帮助。

对于那些懒得调整实体化的人.js你自己。我添加了 500 毫秒的默认超时(我认为这始终有效)。这适用于日期和时间选取器。

具体化.js

解决方案是使用父级过滤目标: if ( target != ELEMENT && target != document && target !=P.$root.parent()[0] && event.which != 3 )

基于阿曼多的答案(唯一对我有用的答案),我使用 JQuery 为非角度项目创建了一个 JavaScript 函数:

function refreshSelects(){
$('select').material_select('destroy');
$('select').each(function(){
$(this).parent().attr("onclick","event.stopPropagation();");
});
$('select').material_select();  
}

然后,当我必须初始化或刷新选择器内容时,我只需要调用函数

refreshSelects();

最新更新