Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果从onclick()内部调用app.open,则不响应_Javascript_Onclick_Adobe Indesign - Fatal编程技术网

Javascript 如果从onclick()内部调用app.open,则不响应

Javascript 如果从onclick()内部调用app.open,则不响应,javascript,onclick,adobe-indesign,Javascript,Onclick,Adobe Indesign,在为InDesign编写脚本时,我发现了这个问题:如果我从button.onclick()内部调用app.open(),它就会停止,并且什么也不会发生。 因为我是Javascript的初学者,所以我可能做错了什么。但如果没有,我该如何修复?我找不到别的办法 请,只使用纯Javascript 提前谢谢 以下是工作代码: var book_info; if (app.books.length != 1) { var theFile = File.openDialog ("Select th

在为InDesign编写脚本时,我发现了这个问题:如果我从button.onclick()内部调用app.open(),它就会停止,并且什么也不会发生。 因为我是Javascript的初学者,所以我可能做错了什么。但如果没有,我该如何修复?我找不到别的办法

请,只使用纯Javascript

提前谢谢

以下是工作代码:

var book_info;

if (app.books.length != 1) {
    var theFile = File.openDialog ("Select the book file to open...");
    get_data(theFile);
        alert(book_info.filePath + "\r" + book_info.name);
}

book_info.close();

    function get_data(data) {
        app.open(data);
        book_info = app.activeBook;
            alert("INSIDE FUNCTION" + book_info.filePath + "\r" + book_info.name);
        return data;
    }
这里是一个不起作用的:

var book_info;

var w1 = new Window ("dialog", "TEST");
    w1.minimumSize.height = 50;
    w1.minimumSize.width = 50;

var p1 = w1.add ("panel");
        sel_button = p1.add ("button", undefined, "Select book");

var g1 = w1.add ("group");
        g1.add("button", undefined, "Cancel");
        g1.add("button", undefined, "OK");

sel_button.onClick = function(){
    var theFile = File.openDialog ("Select the book file to open...");
    get_data(theFile);
        alert(book_info.filePath + "\r" + book_info.name);
    book_info.close();
};

w1.show();


function get_data(data) {
    app.open(data);
    book_info = app.activeBook;
        alert("INSIDE FUNCTION" + book_info.filePath + "\r" + book_info.name);
    return data;
}

现在有另一个答案

它还建议使用“调色板”窗口,而不是模态对话

试试这个:

var book_info;     
var theFile;   
var getData;  
var w1 = new Window ("dialog", "TEST");     
    w1.minimumSize.height = 50;     
    w1.minimumSize.width = 50;     
    var p1 = w1.add ("panel");     
        sel_button = p1.add ("button", undefined, "Open a book");     
    var g1 = w1.add ("group");     
        g1.add("button", undefined, "Cancel");     
        g1.add("button", undefined, "OK");     

sel_button.onClick = function(){     
    theFile = File.openDialog ("Select the book file to open...");    
  getData =1;           
  w1.close(1);   
};     

w1.show()  

if (  getData ==1) {   
  if ( theFile ) {   
  get_data(theFile);     
  }   
}   

function get_data(data) {     
    app.open(data);     
    book_info = app.activeBook;     
        alert("INSIDE FUNCTION" + book_info.filePath + "\r" + book_info.name);     
    return data;     
}  

它什么也不做,它返回一个错误——“无法处理请求,因为模式对话处于活动状态”。可以使用w1.close();,但你也会犯同样的错误。当您调用附加到窗口的函数时,它将假定存在一个窗口(即使您将其关闭),并停止某些函数。我以前也遇到过类似的问题,必须完全更改脚本completely@nicolai.kant对我来说,它没有返回任何错误,只是停止了。你能给我举个例子说明我该如何修改脚本吗?目前我不知道。。。。谢谢。在我的情况下,最好的解决方案是从“对话框”改为“调色板”。这允许我不对已经编写的代码进行更改。谢谢你的帮助。