有人可以帮我做一个脚本,报告所有孩子及其财产的情况吗?它类似于wholeContents()函数。这是我的递归函数。
function iterate(obj) {
for (var property in obj) {
if(obj[property] instanceof Array) {
console.log("Array: " + property + "," +obj[property])
iterate(obj[property])
} else if(obj[property] instanceof Object){
console.log("Object: " + property + ',' + obj[property])
iterate(obj[property])
} else {
console.log("Unknown: " + property +"," + obj[property]);
}
}
}
iterate(app.windows())
我只获得第一级。每个项目下都有一堆UIElement和数组。我认为这与Applescript返回对象说明符有关,但与实际对象无关吗?我不确定如何将对象说明符的名称作为函数调用。我尝试了objproperty,obj.property(),eval(“ obj。” + property +“()”),但是它们都不起作用。我也尝试了iterate(app.windows())[0]
谢谢您的帮助。
最佳答案
我假设您要使用“系统事件”的Processes Suite
中的命令。
要获取UIElement
的属性,必须使用以下属性之一:
(accessibilityDescription,类,描述,启用,整个目录,
重点,帮助,maximumValue,minimumValue,名称,方向,
位置,角色,角色描述,所选内容,大小,子角色,标题,
值)
获得名称的示例:obj[i].name()
。
要从UIElement获取所有UIElement,必须使用obj[i].uiElements()
这是“ TextEdit”过程的窗口上的示例。
function iterate(obj) {
for (var i in obj) {
if(obj[i] instanceof Array) {
iterate(obj[i])
} else if(obj[i] instanceof Object){
console.log("Object: " + i + ': name = ' + obj[i].name() + ', value = ' + obj[i].value() + ', class = ' + obj[i].class() + ', description = ' + obj[i].description())
iterate(obj[i].uiElements())
}
}
}
var sysEv = Application('System Events')
var app = sysEv.processes['TextEdit']
iterate(app.windows())