如何确保插件菜单项正确变灰或不变灰(启用/禁用)(javascript,Adobe Bridge)

How to ensure plugin menu items are correctly greyed out or not (enabled / disabled) ( javascript, Adobe Bridge)

我正在制作一些 Adob​​e Bridge (CS 5.1) 插件。

我的问题是,除非用户为脚本选择了有效的项目,否则我不知道如何确保它们各自的菜单项变灰。
我可以通过编写类似

的代码来达到所需的状态
function greyOutMenu () {
    var doc = application.document;
    var these = [];
    these = doc.selections;
    menuItem.enabled = true;
    if ( these.length < 1 ) {
        menuItem.enabled = false;
        return;
    }
    for ( var i in these ) {
        if ( these[i] /* is invalid */ ) { menuItem.enabled = false;
        return;
    }
}

但是如何在打开菜单时直接将此检查运行?如果我使用

myMenu.onSelect = greyOutMenu();

它只是 运行 在启动时检查而不是在打开菜单时检查!

好的,我知道出了什么问题。我已将其更改为...

function greyOutMenu () {
    var doc = app.document;
    var here = doc.presentationPath;
    var thisFolder = Folder ( here );

    if ( decodeURI ( thisFolder.name ) === "correct folder name" ) { menuItem.enabled = true; }
    else { menuItem.enabled = false; }
    if (!app.document.selectionsLength > 0 ) { menuItem.enabled = false; }
}
menuItem.onDisplay = greyOutMenu;

我发誓我已经试过了menuItem.onDisplay,但我一定是犯了语法错误。

另外,在我的例子中,在正确的文件夹中并选择一些东西就足够了,因为文件是由相机直接添加的。更复杂的检查被添加到函数本身,以防止每次打开菜单时卡顿。