我正在为 macOS 创建一个窗口切换器。
我用来CGWindowListCopyWindowInfo获取打开的窗口的列表。
let windows = CGWindowListCopyWindowInfo([.excludeDesktopElements], kCGNullWindowID)
Run Code Online (Sandbox Code Playgroud)
我没有使用该optionOnScreenOnly选项,CGWindowListCopyWindowInfo因为它排除了非空间窗口。
但是,这会导致某些虚拟窗口也包含在窗口列表中。例如,Xcode 上每个打开的选项卡都有一个窗口。除了实际窗口之外,VLC 播放器还有一个额外的隐形窗口。如果我使用optionOnScreenOnly.
有没有办法将这些虚拟窗口与实际窗口分开?
我已经探索了返回的字典中的kCGWindowLayer和键,但无法区分窗口。kCGWindowStoreTypeCGWindowListCopyWindowInfo
编辑:
我对 Swift 和 Objective-C 解决方案以及私有 API 调用持开放态度。
编辑2:
我知道这是可能的,因为应用程序Witch可以正确处理这些情况。
window.innerHeight给出视口的高度,包括水平滚动条的高度.有没有办法找到可用的内高,即不包括水平滚动条的内高?
我理想地寻找一个纯JS解决方案,但如果没有,jQuery等也很好.
我是Git的新手,很抱歉,如果这是一个愚蠢的问题,但git在右键单击WebStorm/PhpStorm中的文件(在Project侧栏中)出现的上下文菜单子菜单中的以下两个选项之间有什么不同?
Chrome 扩展程序:如何激活当前选项卡旁边的选项卡(即右侧的选项卡)。这是我拥有的代码,但它无法正常工作 - 而不是下一个选项卡,一个随机选项似乎被激活。
特别是我认为选项卡的索引属性在当前页面中从左到右指示其索引是否正确?
// switch to next tab
function nextTab() {
// first, get currently active tab
chrome.tabs.query({active: true}, function(tabs) {
if (tabs.length) {
var activeTab = tabs[0],
tabId = activeTab.id,
currentIndex = activeTab.index;
// next, get number of tabs in the window, in order to allow cyclic next
chrome.tabs.query({currentWindow: true}, function (tabs) {
var numTabs = tabs.length;
// finally, get the index of the tab to activate and activate it
chrome.tabs.query({index: (currentIndex+1) % numTabs}, function(tabs){
if (tabs.length) …Run Code Online (Sandbox Code Playgroud) 如何在JavaScript中创建对象的只读/不可变版本,其属性无法更改?这也应该适用于任何子对象的属性等.
我所遇到的所有方法(Object.defineProperty,Object.freeze等)仅适用于对象的顶级属性,但不适用于子对象.
(可能的用例:在特定模块中创建/修改对象settings或configuration类型对象后,需要以不可变的形式将其公开给程序的其余模块.)
javascript ×2
const ×1
git ×1
height ×1
immutability ×1
jquery ×1
macos ×1
object ×1
objective-c ×1
phpstorm ×1
readonly ×1
swift ×1
tabs ×1
viewport ×1
webstorm ×1