是否有创建新页面的InDesign事件处理程序?

时间:2016-04-25 15:42:46

标签: event-handling adobe-indesign

我只想在inDesign中创建新页面时运行一个函数。 Adobe的文档似乎允许您将事件处理程序附加到几乎所有对象,但它们没有提供任何如何在文档级别之后执行此操作的示例。

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

如何在创建新页面时触发此操作。我已经尝试将app替换为app.document.pages,但它无效。

3 个答案:

答案 0 :(得分:2)

试试这个......

#targetengine 'onAddingPage'

var db = {};

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

main();

Adding pages through menu item

Reacting on adding pages Event

答案 1 :(得分: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();
  }
}




谢谢

毫克

答案 2 :(得分: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;
  }
}

谢谢

毫克