2016-11-10 85 views
0

看评论AT柱底后“前” - 我来了JS - 事件侦听器被触发事件

我试图写一个简单的JS脚本强迫用户的部分解决方案在某些操作(特别是Save,SaveAs和Export)之前拼写检查他们的独立文档。

请随身携带,因为我刚刚学习JS,所以我确定有一些容易丢失的东西。

本质上,我的问题是脚本正在工作,但它在事件后运行。例如,在SaveAs上,事件运行,保存文档,然后触发该函数。

我在想我需要某种之前的调用,但我无法弄清楚。

这是到目前为止我的代码:

#target indesign 

#targetengine "session" 

main(); 
function main(){ 
    alert('Hello 8'); 

    var myBeforeSaveEvList = app.addEventListener("beforeSave", checkSpelling, false); 

    var myBeforeSaveAsEvList = app.addEventListener("beforeSaveAs", checkSpelling, false); 

    var myBeforeExportEvList = app.addEventListener("beforeExport", checkSpelling, false); 

    //var myAfterSaveEvList = app.addEventListener("afterSave", myAfterSaveHandler, false); 

    function checkSpelling(myEvent){ 
     alert('Before Save...'); 
     app.menuActions.item("Check Spelling...").invoke(); 
    } 

} 
+0

您是否尝试过联系Adobe支持? – evolutionxbox

+0

我还没有与Adobe支持运气,但我已经提交了相同的问题,论坛。 – blancast

回答

0

我设法拿出一个部分解决方案,但现在我遇到了另一个问题。

我按名称调用动作并添加了'beforeInvoke'事件侦听器。这允许CheckSpelling函数在事件运行之前运行。

问题是在检查拼写弹出之后立即弹出保存/导出对话框,从不允许用户在保存/导出之前实际检查拼写。

我想我需要编写一些代码来防止弹出对话框,直到拼写检查完成,但我不知道从哪里开始。

新代码:

main(); 
 
     
 
    function main(){ 
 
     
 
     alert('Hello 12'); 
 
     
 
    //app.addEventListener("beforeExport", chSpelling); 
 
    //app.addEventListener("beforeSave", chSpelling); 
 
    //app.addEventListener("beforeSaveAs", chSpelling); 
 
     
 
     var 
 
    \t //beforeSave = app.menuActions.itemByID (260).addEventListener ("beforeInvoke", checkSpelling); 
 
    \t //beforeSaveAs = app.menuActions.itemByID (261).addEventListener ("beforeInvoke", checkSpelling); 
 
    \t //beforeSaveAsCopy = app.menuActions.itemByID (262).addEventListener ("beforeInvoke", checkSpelling); 
 
    \t //beforeExport = app.menuActions.itemByID (113411).addEventListener ("beforeInvoke", checkSpelling); 
 
    \t 
 
    \t beforeSave = app.menuActions.itemByName ("$ID/Save").addEventListener ("beforeInvoke", checkSpelling); 
 
    \t beforeSaveAs = app.menuActions.itemByName ("$ID/Save As...").addEventListener ("beforeInvoke", checkSpelling); 
 
    \t beforeSaveACopy = app.menuActions.itemByName ("$ID/Save a Copy...").addEventListener ("beforeInvoke", checkSpelling); 
 
    \t beforeExport = app.menuActions.itemByName ("$ID/Export...").addEventListener ("beforeInvoke", checkSpelling); 
 
     
 
     function checkSpelling(myEvent){ 
 
    \t \t alert('Check Spelling...'); 
 
    \t \t app.menuActions.item("Check Spelling...").invoke(); 
 
    \t } 
 
     
 
     
 

 
    }