当通过JavaScript更改输入值时,macOS Sierra中的Safari 10.0似乎改变了输入中占位符的行为方式.它现在也不同于Chrome(53.0.2785.116)正在做的事情.
到目前为止,当通过JavaScript设置输入值时,占位符将消失.通过JavaScript将值设置为空后,占位符将重新出现.
现在,通过JavaScript设置输入值不会隐藏占位符,直到输入获得后焦点(例如通过单击).
检查这个JS Bin的演示:https://jsbin.com/rogoludahu/edit? html,js,output
这是预期的行为吗?如果是这样,在通过JavaScript进行更改后隐藏/取消隐藏占位符是否有一个聪明的解决方法?
编辑:现在已经在rdar:// 28412751上提交了Safari 10和Safari技术预览版.
我创建了一个简单的仅限 macOS 的 SwiftUI 应用程序,并按照Apple 的说明添加了一个设置屏幕:
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
RootView()
}
Settings {
SettingsView()
}
}
}
Run Code Online (Sandbox Code Playgroud)
它有效:首选项选项选项显示在应用程序菜单中。现在,我还想以编程方式打开此设置窗口,例如单击按钮时。有没有办法实现这一目标?
我希望 中有一种方法NSApplication,类似于关于窗口,但似乎没有。
我注意到使用 iOS 13.3.1 及更早版本的 SwiftUI 中有一个相当奇怪的、可能有问题的行为。为了演示,这个非常简单的场景:
完整示例代码:
import SwiftUI
struct ContentView: View {
@State var showingSheet: Bool = false
var body: some View {
NavigationView {
Text("ParentView")
.navigationBarItems(trailing: Button(action: { self.showingSheet = true }) { Text("Show") })
}.sheet(isPresented: $showingSheet) { SheetView() }
}
}
struct SheetView: View {
@Environment(\.presentationMode) var presentationMode
var body: some View {
VStack {
Text("Sheet content")
Button(action: { self.presentationMode.wrappedValue.dismiss() }) { Text("Hide") }
}
}
}
Run Code Online (Sandbox Code Playgroud)
重现:
swiftui ×2
html ×1
ios ×1
javascript ×1
macos ×1
macos-sierra ×1
preferences ×1
safari ×1
settings ×1
swift ×1
window ×1