2016-11-10 125 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 } 
 
     
 
     
 

 
    }