![如何防止应用程序在 Mac OS X 上启动时窃取焦点?](https://linux22.com/image/1245089/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%9C%A8%20Mac%20OS%20X%20%E4%B8%8A%E5%90%AF%E5%8A%A8%E6%97%B6%E7%AA%83%E5%8F%96%E7%84%A6%E7%82%B9%EF%BC%9F.png)
以下是一个示例用例:
- 打开 Firefox
- 将光标放在可以输入的位置
- 打开其他东西(eclipse 是我当前的例子..)
- 开始在 Firefox 中输入内容,直到 eclipse 窃取焦点并中断你正在输入的内容
如何防止应用程序窃取焦点并打断我的打字?
更新:
我得到的答案似乎表明这无法完成,但是可以在 Windows 上完成,所以我很难想象它不能在 osx 上完成,如果是这样的话,那将是一个巨大的可用性失败。
答案1
我认为你不能:D 不过你总是可以在不同的桌面上执行 Eclipse ;)
答案2
如果有人仍在寻找这个问题的答案,我最近发现了这篇文章,它应该可以阐明一些可能的解决方案:
诚然,这个问题提出后仅一年多就出现了,但看起来人们仍在寻找生活中难题的答案。
TL;DR:您可以修改应用程序本身,并向应用程序的“info.plist”添加一个参数集,或者您可以编写一个脚本,在其他窗口后面启动该应用程序。还有第三个“选项”,基本上就是说您可以让一个应用程序保持在其他应用程序之上,即使在它们启动时也是如此,但这不一定能阻止新启动的应用程序窃取焦点。
答案3
这些特性既定义在您启动的应用程序中,也定义在当前具有焦点的应用程序中。您从中启动 Eclipse 的 Finder 也是一个应用程序 — 如果 Eclipse 没有从 Finder 窃取焦点,则应用程序启动看起来不会做任何事情。因此,默认设置是在应用程序启动时窃取焦点。也许有一个 Firefox 插件可以让它“独裁”?您可以随时将 LSUIElement 键添加到已启动应用程序的 Info.plist(在应用程序包内),以带走整个应用程序的 UI 元素,但这可能会在一定程度上降低它对您的实用性。
在不同的空间中执行新的应用程序,然后切换回来对我来说不起作用;启动的应用程序只有在加载完成后才会带您回到该空间。
实际上,避免注意力被分散的最简单方法就是在启动应用程序后耐心等待应用程序加载。大多数高级用户会让他们经常使用的所有应用程序在后台打开,只有当他们需要将注意力全部转移到某个新应用程序上时,他们才会打开它。