AppleScript:当前选项卡和参数字符串错误

AppleScript: Current Tab and Argument String error

为什么这很好用

tell application "Safari" to get current tab of window 1

这行不通吗?

set appName to "Safari"
tell application appName to get current tab of window 1

如何解决这个问题?

正如评论中的某些人所说,将应用程序存储在变量中以备后用不太可能有用。也就是说,这是可能的,它可以用于简单的任务。

例如:

set browserApp to application "Safari"
tell browserApp to activate

之所以可行,是因为 activate 不需要任何特殊词典。

您可以通过“使用术语来自”来部分解决您的问题,但这可能会破坏将应用程序存储在变量中的目的。

set browserApp to application "Safari"
using terms from application "Safari"
    tell browserApp to get name of current tab of window 1
end using terms from

这行得通,但可能不是您想要的,因为 Safari 仍被硬编码为每个 tell.

周围的字符串

如果您确定您可以将变量设置为的每个应用程序都具有您需要的字典术语,但是,您可以通过对变量使用 run script 来做到这一点。

set browserApp to "Safari"
set getTabName to "tell application \"" & browserApp & "\" to get name of current tab of window 1"
run script getTabName

这个有效:

run script 基本上作为评估工作。您可以将 run script 的结果存储在一个变量中供以后使用,就像 AppleScript 中的其他任何地方一样。也可以直接使用,比如设置剪贴板。例如:

set tabName to (run script getTabName)

set the clipboard to (run script getTabName)

请注意,如果您将 browserApp 设置为不理解该术语的内容,它将失败,并且错误很可能令人困惑,因为您无法获得脚本编辑器的好处:脚本编辑器将突出显示 run script 而不是有问题的文本:

在每个示例中,为了测试目的,我选择使用“get name of”而不是“get current tab…”,以更明显地表明脚本确实得到了我期望的结果.结果应该是当前选项卡中网页的标题,很容易验证它是正确的(或不正确的)。您也可以使用“get url of”,或当前选项卡在您正在查询的浏览器中具有的任何 属性。