2016-04-25 12 views
0

新しいページがinDesignで作成されるたびに関数を実行するだけです。ほとんどすべてのオブジェクトにイベントハンドラをアタッチできるようにAdobeのドキュメントが表示されていますが、ドキュメントレベルを超えてこれを行う方法の例はありません。新しいページを作成するときのInDesignイベントハンドラはありますか?

var myEventListener = app.eventListeners.add("afterNew", myAfterNewHandler); 

新しいページの作成時にこれをトリガーする方法を教えてください。私はすでにappapp.document.pagesに置き換えようとしましたが、うまくいきませんでした。

答えて

1

ミリグラム。

次のスニペットは、ページパネルで新しいページのアイコンを追加することで機能しますか、それはダイアログ原因モーダルダイアログのエラーを設定する文書に

設定ページ長、ショートカットです。

var doc = app.activeDocument; 
var p = doc.pages.length; 
var listener = doc.addEventListener(
    MutationEvent.AFTER_ATTRIBUTE_CHANGED, 
    create_dummy 
); 
listener.name = 'ooo'; 

function create_dummy(e) { 
    if (e.attributeValue.constructor.name === 'Page') { 
    if (p < e.currentTarget.pages.length) { 
     var tf = e.attributeValue.textFrames.add(); 
     tf.geometricBounds = [1,1,72,144]; 
     tf.parentStory.contents = e.timeStamp.toString(); 
    } 
    p = e.currentTarget.pages.length; 
    } 
} 

mgの

1

MutationEventを使用しようとしましたが、 このスニペットは、新しいページの追加時にタイムスタンプ付きのテキストフレームを作成します。

#targetengine session 
 

 
var doc = app.activeDocument; 
 
var listener = doc.addEventListener(
 
    MutationEvent.AFTER_ATTRIBUTE_CHANGED, 
 
    create_dummy 
 
); 
 
listener.name = 'ooo'; 
 

 
function create_dummy(e) { 
 
    if (e.attributeValue.constructor.name === 'Page') { 
 
    var tf = e.attributeValue.textFrames.add(); 
 
    tf.geometricBounds = [1,1,72,144]; 
 
    tf.parentStory.contents = new Date().toString(); 
 
    } 
 
}

はあなたに感謝

私はスマートな方法を見つけることができませんでし

+0

この解決策は機能しました。ただし、ページが削除されたり、ページがページパネルでダブルクリックされたりすると、この機能も実行されます。他のイベントを区別する方法はありますか? –

2

#targetengine 'onAddingPage' 
 

 
var db = {}; 
 

 
var main = function() { 
 
\t var myIdleTask = app.idleTasks.item ("onAddingPage"), 
 
\t onIdleEventHandler = function(idleEvent) { 
 
\t \t var doc = app.properties.activeDocument; 
 
\t \t 
 
\t \t if (!doc) { 
 
\t \t \t db = {}; 
 
\t \t \t return; 
 
\t \t } 
 
\t \t 
 
\t \t if (!db[doc.id]) { 
 
\t \t \t db[doc.id] = doc.pages.length; 
 
\t \t \t return; 
 
\t \t } 
 
\t 
 
\t \t else { 
 
\t \t \t if (doc.pages.length>db[doc.id]) { 
 
\t \t \t \t !app.modalState && alert("Hey you just added "+(doc.pages.length-db[doc.id])+" page(s) ! Didn't you ?"); 
 
\t \t \t } 
 
\t \t \t db[doc.id] = doc.pages.length; 
 
\t \t } 
 
\t }; 
 
\t 
 
\t if(!myIdleTask.isValid) { 
 
\t \t myIdleTask = app.idleTasks.add({name:"onAddingPage", sleep:100}); 
 
\t \t myIdleTask.addEventListener(IdleEvent.ON_IDLE, onIdleEventHandler); 
 
\t } 
 
} 
 

 
main();

Adding pages through menu item

...これを試してみてくださいありがとう

Reacting on adding pages Event

関連する問題