【问题标题】:AppleScript: strange error about non-defined variableAppleScript:关于未定义变量的奇怪错误
【发布时间】:2013-03-05 18:03:45
【问题描述】:

有时,我会收到此错误:

./mac/get_foregroundapp_info.scpt:254:265: execution error: The variable window_name is not defined. (-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

错误出现在if window_name ...行中。

但它很少出现,可能在大约 2-5% 的情况下。

当我按住 Command 键并将鼠标悬停在 Chrome 中的某个链接上时,它似乎更频繁/总是出现 (?)。不知道这是否是现在完全随机的行为或任何相关的行为。


编辑:当我使用预览打开图像时,它似乎也总是出现。奇怪的是,如果我用预览打开 PDF,它似乎可以工作。


正如 Chuck 所指出的,可以使用另一个 try 块来捕获此“未定义变量”错误。

但实际上我的主要问题是:为什么变量未定义?这意味着什么?因为在我看来,它必须在那个地方定义。


(顺便说一句,这段关于获取窗口标题的代码有几个缺点。这里描述了其中一个。因此它也并不总是有效。请参阅另一个解决方案here,它似乎总是有效,也没有如此奇怪的错误。)

【问题讨论】:

  • 你是如何执行这段代码的?在测试代​​码时,我想不出任何让 AppleScript Editor 成为最前面的应用程序的轻量级方法。
  • @Uriah:我把它放在某个文件中,然后在终端上,我执行了这个:while true; do sleep 1; osascript -ss myscript; done

标签: macos applescript


【解决方案1】:

听起来try 块中出现了错误。尝试在其中放置一个错误处理程序或删除 try 块,因为现在它只会使变量未定义,然后您将在下一行看到错误。

【讨论】:

  • 没有try 块也会出现同样的问题。
【解决方案2】:

虽然我不知道您为什么会收到错误消息,但您是否尝试过类似的方法?

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

【讨论】:

  • 第二个确实有效,因为它似乎捕获了“未定义变量”错误。但我的主要问题主要是:为什么变量未定义?这意味着什么?因为在我看来,它必须在那个地方定义。
  • 我没有立即明白您收到错误的原因。我将不得不调试完整的脚本来尝试解决这个问题。如果您有 Script Debugger,您可以尝试使用它。如果您有兴趣,它有一个演示下载。 latenightsw.com
【解决方案3】:

我找到了解决方案,说我“错误 -2753”是一个假错误。因为我的解决方案是找到并正确添加块

  tell application "PrettyApp"
  end tell --PrettyApp 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-05
    • 2012-07-11
    • 2012-05-16
    • 2021-11-19
    • 1970-01-01
    • 2014-03-09
    • 2011-08-24
    • 2010-12-20
    相关资源
    最近更新 更多