4

私は BBEdit のスクリプトを書いて、TextMate から来てくつろげるようにしようとしています。私ができる必要があることの 1 つは、私が参照しているオブジェクトに特定のプロパティがあるかどうかを確認することです。

例えば:

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

これはプロジェクト ウィンドウでは成功しますが、ディスク ブラウザー ウィンドウでは成功しません。後者には「選択項目」プロパティがないためです。オブジェクトにそのようなプロパティがあるかどうかを確認するにはどうすればよいですか?

注意: Script Editor でオブジェクトを調べて (プロパティを取得)、どのようなプロパティがあるかを確認する方法は知っていますが、実行時にそれらが何であるかを知る必要があります。

4

4 に答える 4

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 に答える
1

bbeditを持っていないので確認できませんが、異なる種類のウィンドウが存在し、それぞれの種類のウィンドウのプロパティが異なる場合は、最初にウィンドウの種類を確認するだけではいけませんか?次に、取得できるプロパティのタイプがわかります。ウィンドウのタイプや種類、または決定に役立つものを示すウィンドウの基本的なプロパティが必要です。

于 2011-08-04T18:38:09.267 に答える
0

BBEdit ではdocumentsとの間に違いがあります。の要素ですが、プロパティのみを持っているため、最初にウィンドウのタイプを確認して、エラーを完全にキャッチすることを回避できます (結果として、よりクリーンなコードを作成できます)。windowsWindowsdocumentswindowsselection

また、. selection_selectioninsertion point

于 2011-08-05T12:03:43.047 に答える
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 に答える