You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JXA:通过窗口ID操控窗口时出现获取对象失败的问题

解决JXA中通过窗口ID设置Preview窗口位置的错误

我来帮你搞定这个问题!你遇到的Error -1728: Can't get object错误,原因其实很简单:你用windows.whose({id: 15596})拿到的不是单个窗口对象,而是一个窗口集合(哪怕只有一个匹配的窗口,它依然是集合类型),集合本身并没有bounds属性,所以直接赋值会失败。

正确的解决方法

你只需要从筛选出的窗口集合中取出第一个元素(因为窗口ID是唯一的,只会有一个匹配项),再给这个单个窗口设置bounds就可以了。下面是修正后的代码:

// 获取Preview应用对象
const previewApp = Application("Preview");
// 通过ID筛选窗口,并取出第一个匹配的窗口
const targetWindow = previewApp.windows.whose({ id: 15596 })[0];
// 检查窗口是否存在,避免额外报错
if (targetWindow) {
  targetWindow.bounds = {x: 1440, y:25, width:1440, height: 2535};
}

更简洁的写法

如果你想让代码更紧凑,也可以直接把索引写在后面:

Application("Preview").windows.whose({id: 15596})[0].bounds = {x: 1440, y:25, width:1440, height: 2535};

为什么原来的索引写法有效?

之前用windows[0]能成功,是因为windows[0]直接返回了单个窗口对象,而不是集合,所以可以直接设置bounds属性。而whose方法的返回值始终是集合类型,必须通过索引定位到具体的窗口实例才行。

内容的提问来源于stack exchange,提问作者Xehelios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 22:38:13