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

时间:2018-12-03 20:32:24

标签: javascript menu adobe menuitem adobe-bridge

我正在制作一些Adobe Bridge(CS 5.1)插件。

我的问题是,除非用户为脚本选择了有效的项目,否则我无法弄清楚如何确保其相应的菜单项显示为灰色。
我可以通过编码类似的代码来达到所需的状态

lc_messages = 'C'

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

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;
    }
}

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

1 个答案:

答案 0 :(得分: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,但是我肯定犯了语法错误。

此外,就我而言,将文件放置在正确的文件夹中并进行选择就足够了,因为文件是直接由相机添加的。而是将更复杂的检查添加到函数本身,以防止每次打开菜单时都卡住。