0

我正在制作一些 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();

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

4

1 回答 1

0

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

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,但我一定犯了语法错误。

此外,在我的情况下,位于正确的文件夹中并选择某些内容就足够了,因为文件是由相机直接添加的。相反,更复杂的检查被添加到函数本身,以防止每次打开菜单时出现卡顿。

于 2018-12-06T21:42:58.220 回答