Macos AppleScript:关于未定义变量的奇怪错误
有时,我会遇到这样的错误:Macos AppleScript:关于未定义变量的奇怪错误,macos,applescript,Macos,Applescript,有时,我会遇到这样的错误: /mac/get\u foregroundapp\u info.scpt:254:265:执行错误:未定义变量窗口名称。(-2753) 这很奇怪,因为我看不出变量是如何定义的。代码如下: global frontApp, frontAppName, idleTime, window_name tell application "System Events" set frontApp to first application process whose fro
/mac/get\u foregroundapp\u info.scpt:254:265:执行错误:未定义变量窗口名称。(-2753)
这很奇怪,因为我看不出变量是如何定义的。代码如下:
global frontApp, frontAppName, idleTime, window_name
tell application "System Events"
set frontApp to first application process whose frontmost is true
end tell
set window_name to ""
try
set window_name to name of front window of frontApp
end try
if window_name = missing value then
set window_name to ""
end if
如果窗口名…,则错误出现在行中
但这种情况很少出现,可能发生在大约2-5%的病例中
当我按下命令键并将鼠标停留在Chrome中的某个链接上时,它似乎更经常/总是出现(?)。现在不知道这是完全随机的行为还是以任何方式相关
编辑:当我用预览打开图像时,它似乎也总是出现。奇怪的是,如果我打开带有预览的PDF文件,它似乎可以工作
正如Chuck指出的,可以用另一个try
块捕获这个“未定义变量”错误
但我的主要问题是:为什么变量没有定义?这是什么意思?因为在我看来,它必须在那个地方定义
(顺便说一句,这段关于获取窗口标题的代码有几个缺点。这里介绍了其中一个。由于这个原因,它也不总是起作用。请参阅另一个似乎总是起作用的解决方案,而且没有这些奇怪的错误。)听起来好像try
块中出现了错误。尝试将错误处理程序放入其中或删除Try块,因为现在它只会使变量无法定义,然后您将在下一行看到错误。虽然我不知道为什么会出现错误,但您尝试过类似的方法吗
try
set window_name to name of front window of frontApp
on error
set window_name to ""
end try
或者更符合你已经拥有的
set window_name to ""
set window_name to name of front window of frontApp
try
if window_name = missing value then set window_name to ""
on error
set window_name to ""
end try
我找到了解决方案,这说明我的“错误-2753”是一个假错误。因为我的解决方案是“查找并正确添加”块
tell application "PrettyApp"
end tell --PrettyApp
如果没有try
块,同样的问题也会发生。您如何执行此代码?我想不出任何轻量级的方法,在测试代码时,不让AppleScript Editor成为最前端的应用程序。@Uriah:我把它放在某个文件中,然后在终端上,我执行了以下命令:,而true;做睡眠1;osascript-ssmyscript;完成
第二个实际工作,因为它似乎捕捉到了“未定义变量”错误。但我的主要问题是:为什么变量没有定义?这是什么意思?因为在我看来,它必须在那个地方定义。我不明白为什么会出现错误。我将不得不调试完整的脚本来尝试找出答案。如果您有脚本调试器,您可以尝试使用它。如果你有兴趣,它有一个演示下载。