如何在我的 WKWebView 中关闭 OS X 的智能引号替换?
How can I turn off OS X's Smart Quotes replacement in my WKWebView?
我正在开发一个包含 WKWebView 的 Mac 应用程序。 Web 视图中的 HTML 包含一个 input
字段,用户可以在其中键入代码(实际上是 Ruby)。当我在这个字段中输入引号 (") 时,它会自动变成花哨的大引号 (")。因为 Ruby 字符串使用 ASCII 引号作为分隔符,所以这是错误的。
目前我正在获取用户输入的内容,并在使用代码之前将弯引号替换为 ASCII 引号,但显然这并不理想。
我不知道如何禁用此 OS X 功能。显然,用户可以在全局级别的系统偏好设置中执行此操作,但我只想在我的应用程序中将其关闭。
WKWebView、应用程序包本身或其他地方是否有一些配置可以关闭此功能?是否有 HTML 或 CSS 选项?我应该使用不同类型的 HTML 输入字段吗?基本上我可以在整个堆栈的哪个位置进行干预以关闭此功能?
如果您正在使用 Xcode 的 Interface Builder,请选择 textfield/textbox 打开实用工具。在 'Attributes Inspector' 下,您可以将 键盘类型 设置为 ASCII。
要以编程方式执行此操作,请查看 this 之前的问题和答案。
当您在系统偏好设置中切换设置(键盘 > 文本 > 使用智能引号和破折号)时,它会在用户的全局偏好设置域中为键 NSAutomaticQuoteSubstitutionEnabled
设置一个值。我通过比较 defaults read -g
之前和之后的输出来确定这一点。
您可以尝试在应用程序启动的早期将您的应用程序域设置为 false,看看是否会为您的应用程序禁用它:
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSAutomaticQuoteSubstitutionEnabled"];
在 -applicationWillFinishLaunching:
甚至 main()
中尝试。
当然,如果可行,它将在您的整个应用程序中禁用它,而不仅仅是您的 WKWebView
。
在对网络视图中的 <textarea>
进行一些实验后,我发现 smart/fancy 引号替换将通过添加 spellcheck
属性来禁用。
<textarea spellcheck="false" ...>
据我所知(在撰写本文时)没有在任何地方记录并且 MDN currently makes no mention of spellcheck
attribute "auto correcting" quotes。我想 autocorrect
或 autocapitalize
会这样做,但在网络视图的上下文中设置这些显然不会做任何事情。
因为我当时正在开发 React 应用程序,所以属性是驼峰式的,在那种情况下它是 <textarea spellCheck="false" ...>
。
我正在开发一个包含 WKWebView 的 Mac 应用程序。 Web 视图中的 HTML 包含一个 input
字段,用户可以在其中键入代码(实际上是 Ruby)。当我在这个字段中输入引号 (") 时,它会自动变成花哨的大引号 (")。因为 Ruby 字符串使用 ASCII 引号作为分隔符,所以这是错误的。
目前我正在获取用户输入的内容,并在使用代码之前将弯引号替换为 ASCII 引号,但显然这并不理想。
我不知道如何禁用此 OS X 功能。显然,用户可以在全局级别的系统偏好设置中执行此操作,但我只想在我的应用程序中将其关闭。
WKWebView、应用程序包本身或其他地方是否有一些配置可以关闭此功能?是否有 HTML 或 CSS 选项?我应该使用不同类型的 HTML 输入字段吗?基本上我可以在整个堆栈的哪个位置进行干预以关闭此功能?
如果您正在使用 Xcode 的 Interface Builder,请选择 textfield/textbox 打开实用工具。在 'Attributes Inspector' 下,您可以将 键盘类型 设置为 ASCII。
要以编程方式执行此操作,请查看 this 之前的问题和答案。
当您在系统偏好设置中切换设置(键盘 > 文本 > 使用智能引号和破折号)时,它会在用户的全局偏好设置域中为键 NSAutomaticQuoteSubstitutionEnabled
设置一个值。我通过比较 defaults read -g
之前和之后的输出来确定这一点。
您可以尝试在应用程序启动的早期将您的应用程序域设置为 false,看看是否会为您的应用程序禁用它:
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSAutomaticQuoteSubstitutionEnabled"];
在 -applicationWillFinishLaunching:
甚至 main()
中尝试。
当然,如果可行,它将在您的整个应用程序中禁用它,而不仅仅是您的 WKWebView
。
在对网络视图中的 <textarea>
进行一些实验后,我发现 smart/fancy 引号替换将通过添加 spellcheck
属性来禁用。
<textarea spellcheck="false" ...>
据我所知(在撰写本文时)没有在任何地方记录并且 MDN currently makes no mention of spellcheck
attribute "auto correcting" quotes。我想 autocorrect
或 autocapitalize
会这样做,但在网络视图的上下文中设置这些显然不会做任何事情。
因为我当时正在开发 React 应用程序,所以属性是驼峰式的,在那种情况下它是 <textarea spellCheck="false" ...>
。