创建新页面时是否有 InDesign 事件处理程序?
Is there an InDesign event handler for when new pages are created?
我只想在 inDesign 中创建一个新页面时 运行 有一个函数。 Adobe 的文档似乎允许您将事件处理程序附加到几乎所有对象,但他们没有提供任何示例说明如何在文档级别之后执行此操作。
var myEventListener = app.eventListeners.add("afterNew", myAfterNewHandler);
如何在创建新页面时触发它。我已经尝试用 app.document.pages
替换 app
但它没有用。
我尝试使用 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();
}
}
谢谢
毫克
我找不到任何聪明的方法。
以下代码段仅适用于在页面面板或其快捷方式中添加新页面图标,
在文档设置对话框中设置页面长度导致模态对话框错误。
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;
}
}
谢谢
毫克
试试这个……
#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();
我只想在 inDesign 中创建一个新页面时 运行 有一个函数。 Adobe 的文档似乎允许您将事件处理程序附加到几乎所有对象,但他们没有提供任何示例说明如何在文档级别之后执行此操作。
var myEventListener = app.eventListeners.add("afterNew", myAfterNewHandler);
如何在创建新页面时触发它。我已经尝试用 app.document.pages
替换 app
但它没有用。
我尝试使用 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();
}
}
谢谢
毫克
我找不到任何聪明的方法。
以下代码段仅适用于在页面面板或其快捷方式中添加新页面图标,
在文档设置对话框中设置页面长度导致模态对话框错误。
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;
}
}
谢谢
毫克
试试这个……
#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();