Javascript InDesign CS5脚本:如何在'n'秒后打开和关闭弹出窗口?

Javascript InDesign CS5脚本:如何在'n'秒后打开和关闭弹出窗口?,javascript,window,adobe-indesign,adobe-scriptui,Javascript,Window,Adobe Indesign,Adobe Scriptui,窗口可以正常打开,但脚本不会继续,直到手动关闭弹出窗口!这是不可取的,因为我希望窗口在n秒后自动关闭。。。 那么,我是否必须在与脚本其余部分不同的线程中打开窗口?这可能吗? 以下是我目前的代码: 函数showMessageWindow() { var script=getScriptName();//从下面的函数初始化 var消息=新窗口(“对话框”,脚本); message.add(“StaticText”,未定义,“脚本“+script+”正在运行,请稍候…”); message.sh

窗口可以正常打开,但脚本不会继续,直到手动关闭弹出窗口!这是不可取的,因为我希望窗口在
n
秒后自动关闭。。。

那么,我是否必须在与脚本其余部分不同的线程中打开窗口?这可能吗?

以下是我目前的代码:

函数showMessageWindow()
{
var script=getScriptName();//从下面的函数初始化
var消息=新窗口(“对话框”,脚本);
message.add(“StaticText”,未定义,“脚本“+script+”正在运行,请稍候…”);
message.show();
var startTime=new Date().getTime();//以毫秒为单位
var currentTime=new Date().getTime();//以毫秒为单位
var waitTime=5000;//1000毫秒是1秒
变量延迟=函数()
{
while((当前时间-开始时间)
对话框类型窗口是阻止任何后台操作的模式对话框。然而,即使使用非模态窗口,我也不确定是否可以从同一个脚本中并行执行这两个例程。我非常确定脚本引擎将在继续运行之前等待我们的延迟例程结束:\

处理这种异步processus的唯一方法是将scriptUI与swf文件结合使用,并在AS3中完成任何计时器工作。这样,您就可以在InDesign中继续执行脚本,并在swf文件中运行循环。我做过一次,特别是为了监视一个热文件夹

顺便说一句:您的代码=>message.add(“StaticText”,未定义,…)中有一个错误,…
那应该是小写的statictext;)

谢谢@Loic!嗯,动作脚本。。。VBA或AppleScript也可以这样做,还是ActionScript特别有用?这很有趣,尽管我选择了使用确认框,如果单击了
No
,它将调用
exit()。啊,还有小写的
statictext
,谢谢你指出这一点。我不确定Applescript也帮不上忙。我不知道VB能提供什么。applescript、VB和javascript具有相同的功能
function showMessageWindow()
{
    var script = getScriptName(); // initialized from the function below
    var message = new Window("dialog", script);
    message.add("StaticText", undefined, "The script " + script + " is now running, please wait...");

    message.show();

    var startTime = new Date().getTime(); // in milliseconds
    var currentTime = new Date().getTime(); // in milliseconds
    var waitTime = 5000; // 1000 milliseconds is 1 second

    var delay = function()
    {
        while( (currentTime - startTime) < waitTime)
        {
            currentTime = new Date().getTime(); // in milliseconds
        }
    } // end of closure delay

    delay(); // calling the delay closure function here
    message.close(); // close the message after the specified delay time

} // end of function showMessageWindow

    // called from the function showMessageWindow
    function getScriptName()
    {
        var scriptName = "";

        try
        {
            scriptName = File(app.activeScript).name;
        }
        catch(e)
        {
            scriptName = File(e.fileName).name;
        }

        return scriptName;
    } // end of function getScriptName