2016-04-25 69 views
0

我只想在inDesign中創建新頁面時運行一個函數。 Adobe的文檔似乎允許您將事件處理程序附加到幾乎所有的對象上,但它們沒有給出任何有關如何在文檔級別之前執行此操作的示例。是否有創建新頁面時的InDesign事件處理程序?

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

如何獲取此信息以觸發創建新頁面。我已經嘗試用app.document.pages替換app,但它不起作用。

回答

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; 
    } 
} 

謝謝

毫克

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

相關問題