Javascript Indesign脚本更新窗口?

Javascript Indesign脚本更新窗口?,javascript,adobe-indesign,Javascript,Adobe Indesign,编辑:我也愿意接受关于我能做什么的其他建议 如何使用onChange事件更新窗口?我的解决方案是可行的,但我需要在不可见时将组折叠起来 w.DD.onChange = function() { switch (this.selection.text){ case 'Headline': if(w.visiblegroup) w.visiblegroup.visible = false;

编辑:我也愿意接受关于我能做什么的其他建议

如何使用
onChange
事件更新窗口?我的解决方案是可行的,但我需要在不可见时将组折叠起来

w.DD.onChange = function() {
    switch (this.selection.text){
        case 'Headline':
                if(w.visiblegroup)
                w.visiblegroup.visible = false;
                w.visiblegroup = w.texted;
                w.texted.visible = true;
            break;
    }
}
案例
本身中添加元素后,我尝试使用
w.show
w.update
(带有文档,仍然不确定.update实际上做了什么)。但我想不出来

w.DD.onChange = function() {
    switch (this.selection.text){
        case 'Headline':
                w.add('checkbox', undefined, 'User-Color');
                //w.show();
                w.update();
            break;
    }
}

有人知道这是如何工作的吗?

要折叠组和窗口,需要使用窗口的
layout()
方法。这将加载控制窗口或容器的自动布局行为的
LayoutManager
LayoutManager
也有一个名为
layout()
的方法,该方法调用自动布局行为,并在第一次显示窗口时自动调用。此后,脚本必须显式地调用它,如下所示:

window.layout().layout();
Gerald Singelmann关于如何使用布局管理器的示例:

function main() { 
    var win = new Window("dialog"); 

    var maingroup = win.add("panel"); 
    maingroup.orientation = "column"; 
    add_group( maingroup ); 

    var show_btn = win.add("button", undefined, "show"); 
    show_btn.onClick = function() { 
        var txt = ""; 
        for (var n = 0; n < maingroup.children.length; n++) { 
            txt += maingroup.children[n].edit.text + "\n"; 
        } 
        alert("Da steht: \n" + txt ); 
    } 

    win.show(); 

    function add_group( maingroup ) { 
        var group = maingroup.add( "group" ); 
        group.edit = group.add("edittext", [undefined, undefined, 200, 20], maingroup.children.length ); 
        group.plus = group.add("button", undefined, "+"); 
        group.plus.onClick = add_btn; 
        group.minus = group.add("button", undefined, "-"); 
        group.minus.onClick = minus_btn; 
        group.index = maingroup.children.length - 1; 
        win.layout.layout( true ); 
        return group; 
    } 
    function add_btn ( e ) { 
        add_group( maingroup ); 
    } 
    function minus_btn ( e ) { 
        var ix = this.parent.index; 
        maingroup.remove( maingroup.children[ix] ); 
        win.layout.layout( true ); 
    } 
} 
函数main(){
var win=新窗口(“对话框”);
var maingroup=win.add(“面板”);
maingroup.orientation=“column”;
添加_组(主组);
var show_btn=win.add(“按钮”,未定义,“显示”);
show_btn.onClick=function(){
var txt=“”;
对于(var n=0;n

我通常避免使用LayoutManager,而是自己做所有我更信任的数学,但这是我的拙见

var w=新窗口(“对话框”);
w、 preferredSize=[200200];
w、 DD=w.add('dropdownlist',未定义,[“A”,“B”]);
w、 DD.selection=0;
w、 DD.alignment=[“填充”、“顶部”];
//将堆叠组设置为项目覆盖
w、 gp=w.add(‘组’);
w、 gp.orientation='stack';
w、 gp.alignment=[“填充”、“顶部”];
w、 gp.alignChildren=[“填充”,“顶部”];
w、 gp.p1=w.gp.add(‘面板’,未定义为“A”);
w、 gp.p2=w.gp.add(‘面板’,未定义为“B”);
//显示“正在折叠”的虚拟文本
w、 st=w.add('statictext',未定义,“Collapse?”);
w、 DD.onChange=函数(){
w、 gp.p1.visible=w.DD.selection==0;
w、 gp.p2.visible=!w.gp.p1.visible;
w、 gp.p2.size.height=100;
w、 gp.size.height=w.gp.p1.visible?50:100;
w、 标准位置y=总成位置y+总成尺寸高度+10;
}
w、 onShow=函数(){
w、 gp.p2.可见=假;
w、 gp.size.height=w.gp.p1.size.height=50;
w、 标准位置y=总成位置y+总成尺寸高度+10;
}

w、 show()关于indesign脚本,没有html。很抱歉,没有看到标记