2014-11-14 85 views
4

我有一个关于Indesign脚本的问题。为什么在Indesign中关闭窗口不起作用?

为什么它的工作,当你关闭像一个窗口:

submitButton.onClick = function(){ 
    close(); 
} 

但当我尝试之后执行的功能,如:

submitButton.onClick = function(){ 
    close(); 
    tagElements(); 
} 

(请注意我用的是“与”标签,所以不需要window.close()

该窗口不关闭?我在这里忘了什么吗?不应该关闭窗口,然后执行该功能?

窗口被初始化,如:

var de = new Window('dialog', 'Descriptions'); 
+0

它应该工作。你能否链接包含函数'tagElements();'的代码?如果只在按钮单击时执行该函数,函数'tagElements();'是否可以工作? – user25312 2014-11-17 14:52:26

+1

它没有,因为函数不能在对话框在indesign中打开时执行。所以对话必须先关闭。 – 2014-11-17 14:58:08

+0

这个问题似乎并不容易复制,部分原因是由于代码片段分散。例如,所显示的代码中没有'with'(你*说*你使用它,但也许你错用了!)。你可以添加一个仍然存在问题的单个[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)吗? – usr2564301 2014-11-24 10:03:58

回答

0

下做的伎俩:

with(de) 
    submitButton.onClick = function(){ 
     close(1); 
    } 
} 
if(de.show){ 
    tagElements(); 
} 

de.show将是真实的,当你在关闭功能通过 '1'(1 ==真) 。在关闭按钮时,您只需添加'close()',if语句将为false。

1

更换close()de.close()应该做的伎俩。这适用于我;

var de = new Window('dialog', 'Descriptions'); 
btn = de.add('button', undefined, 'close'); 
btn.onClick = function() { 
    de.close(); 
    alert('foo'); 
} 
de.show(); 
+0

正如你可以在我的文章中看到的,我正在使用“with”标签。不需要“de”引用 – 2014-11-24 09:56:22

+0

@Frederik:在将所有内容移入'de(de)'并移除里面的de.'后,这仍然有效。这不适合你吗? – usr2564301 2014-11-24 09:59:39

+0

否。请定义“工作”。当警报弹出时,对话窗口是否仍然显示?因为这是这里的问题 – 2014-11-24 10:16:15

0

您可能必须关闭(没试过)后添加延迟:

function pause(msec) { 
    var done = null; 
    var date = new Date(); 
    var curDate = null; 
    do curDate = new Date(); 
    while(curDate-date < msec); 
    var done = 1; 
    return done; 
} 

submitButton.onClick = function(){ 
    close(); 
    pause(500); 
    tagElements(); 
} 
0

您需要在代码中引用打开的窗口。

submitButton.onClick = function(){ 
de.close(); 
tagElements(); 
} 

应该工作

+0

正如你可以在我的文章中看到的,我使用“with”标签。需要没有“de”引用 – 2014-11-24 09:55:14

+0

你能在JSfiddle中实现你的代码吗? – Dhanilan 2014-11-25 06:05:20

相关问题