Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Safari 10中新的输入占位符行为-不再通过JavaScript隐藏更改_Javascript_Html_Safari_Macos Sierra - Fatal编程技术网

Safari 10中新的输入占位符行为-不再通过JavaScript隐藏更改

Safari 10中新的输入占位符行为-不再通过JavaScript隐藏更改,javascript,html,safari,macos-sierra,Javascript,Html,Safari,Macos Sierra,macOS Sierra中的Safari 10.0似乎改变了通过JavaScript更改输入值时输入中占位符的行为方式。它现在也不同于Chrome(53.0.2785.116)的功能 直到现在,通过JavaScript设置输入值时,占位符会消失。通过JavaScript将值设置回空后,占位符将重新出现 现在,通过JavaScript设置输入值不会隐藏占位符,直到输入获得焦点(例如通过单击) 检查此JS Bin以获取演示: 这是故意的行为吗?如果是这样的话,是否有一个聪明的解决办法,可以在通过Ja

macOS Sierra中的Safari 10.0似乎改变了通过JavaScript更改输入值时输入中占位符的行为方式。它现在也不同于Chrome(53.0.2785.116)的功能

直到现在,通过JavaScript设置输入值时,占位符会消失。通过JavaScript将值设置回空后,占位符将重新出现

现在,通过JavaScript设置输入值不会隐藏占位符,直到输入获得焦点(例如通过单击)

检查此JS Bin以获取演示:

这是故意的行为吗?如果是这样的话,是否有一个聪明的解决办法,可以在通过JavaScript进行更改后隐藏/取消隐藏占位符


编辑:该文件现已存档于rdar://28412751 用于Safari 10和Safari技术预览。

我今天早些时候遇到了这个问题。就我所见,没有好的解决办法。我的破解方法是在元素上调用
.focus()
,然后在给元素赋值后立即调用
.blur()

这已在Safari技术预览版37(Safari 11.1,WebKit 12605.1.2)以及常规Safari版本11.0.3(WebKit 13604.5.6)中得到解决。

根据(并由我的一位同事确认),这只是打开Javascript控制台后的问题。因此,您可能不需要担心解决方法!

我不知道该错误是否返回或从未正确修复(Safari 11.0.3)。可以使用Joshua提供的jsbin进行复制。我们的解决方案是在更改时重新绘制字段。我们使用ExtJS,因此这是字段重写的一个片段,但应该能够在任何其他框架或vanila中应用它

if(Ext.isSafari && !Ext.isEmpty(me.emptyText)) {
    me.on('change', function() {
        var me = this;

        if(me.rendered && me.el && Ext.isFunction(me.el.redraw)) {
            me.el.redraw()
        }
    })  
}

我注意到了同样的行为!对我来说,这似乎是一个bug,最有可能是一个bug。修复的方法是将值设置为临时解决方案的两倍。试试这个方法:document.getElementById(“myInput”).setAttribute('value',“New value”);@DalinHuang:好主意,但对我来说没有任何更改-可以在JS Bin中尝试一下。它在哪里rdar://28412751?