'前' EventListeners在事件

时间:2016-11-10 16:48:10

标签: javascript adobe-indesign

在帖子的底部看到评论 - 我已经提出了部分解决方案

我尝试编写一个简单的JS脚本,强制用户在某些操作(特别是Save,SaveAs和Export)之前拼写检查其indesign文档。

基本上,我的问题是脚本正在运行,但它在事件发生后运行。例如,在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();
    }
}

1 个答案:

答案 0 :(得分:0)

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

我通过名字调用了这些动作并添加了一个“之前的内容”。事件监听器。这允许CheckSpelling函数在事件运行之前运行。

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

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

新代码:



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

  }