4

我正在尝试编写 BBEdit 脚本,让我在来自 TextMate 时感觉更自在。我需要做的一件事是查看我引用的对象是否具有特定属性。

例如:

tell application "BBEdit"
    tell front window
        get selected items
    end tell
end tell

这将在项目窗口上成功,但不会在磁盘浏览器窗口上成功,因为后者没有“选定项目”属性。如何查看对象中是否有这样的属性?

请注意:我知道如何在脚本编辑器(获取属性)中检查对象以查看它具有哪些属性,但我需要在运行时知道它们是什么。

4

4 回答 4

1

我没有bbedit所以无法检查,但是如果存在不同类型的窗口,并且每种类型的窗口具有不同的属性,那么您不能先检查窗口类型吗?然后你就会知道你可以获得什么类型的属性。窗口必须有一些基本属性来告诉您它的类型或种类或任何有助于您做出决定的东西。

于 2011-08-04T18:38:09.267 回答
1

上课呢?

tell application "BBEdit"
  if class of window 1 is disk browser window then
    # ...
  else
    # ...
  end if
end tell
于 2011-10-21T12:14:34.990 回答
0

到目前为止,我唯一的解决方案是将其包装在错误处理程序中:

try
    set sel to selected items
on error errMsg number errNum
    if errNum is -1700 then
        -- Code that handles no selected items attribute
        return
    end
    error errMsg number errNum
end try
-- Code that handles when selected items attribute exists
于 2011-08-04T08:39:42.973 回答
0

documentsBBEdit和windowsBBEdit之间是有区别的。Windows是 的一个元素documents,但只有windows属性selection,因此您可以先检查窗口的类型并完全避免捕获错误(从而使代码更清晰)。

另外,尝试使用selection属性,这是 BBEdit 中的硬属性,而不是“选定项”,因为selection它总是会返回一个可用的对象,即使只有一个insertion point.

于 2011-08-05T12:03:43.047 回答