Adobe 0046100128056 Scripting Guide - Page 120

Adobe InDesign CS5 Scripting Tutorial, or quit and restart InDesign.

Page 120 highlights

CHAPTER 8: Events Working with Event Listeners 120 eventListeners do not persist beyond the current InDesign session. To make an eventListener available in every InDesign session, add the script to the startup scripts folder. (For more on installing scripts, see "Installing Scripts" in Adobe InDesign CS5 Scripting Tutorial.) When you add an eventListener script to a document, it is not saved with the document or exported to IDML. NOTE: If you are having trouble with a script that defines an eventListener, you can either run a script that removes the eventListener or quit and restart InDesign. eventListeners that use handler functions defined inside the script (rather than in an external file) must use #targetengine "session". If the script is run using #targetengine "main" (the default), the function is not available when the event occurs, and the script generates an error. An event can trigger multiple eventListeners as it propagates through the scripting object model. The following sample script demonstrates an event triggering eventListeners registered to different objects (for the full script, see MultipleEventListeners): #targetengine "session" main(); function main(){ var myApplicationEventListener = app.eventListeners.add("beforeImport", myEventInfo); var myDocumentEventListener = app.documents.item(0).eventListeners.add ("beforeImport", myEventInfo); } function myEventInfo(myEvent){ var myString = "Current Target: " + myEvent.currentTarget.name; alert(myString); } When you run the preceding script and place a file, InDesign displays alerts showing, in sequence, the name of the document, then the name of the application. To remove the event listeners added by the preceding script, run the RemoveMultipleEventListeners script. The following sample script creates an eventListener for each document event and displays information about the event in a simple dialog box. For the complete script, see EventListenersOn. main() function main(){ app.scriptPreferences.version = 5.0; var myEventNames = [ "beforeQuit", "afterQuit", "beforeNew", "afterNew", "beforeOpen", "afterOpen", "beforeClose", "afterClose", "beforeSave", "afterSave", "beforeSaveAs", "afterSaveAs", "beforeSaveACopy", "afterSaveACopy", "beforeRevert", "afterRevert", "beforePrint", "afterPrint", "beforeExport", "afterExport", "beforeImport", "afterImport" ] ; for (var myCounter = 0; myCounter < myEventNames.length; myCounter ++){ app.addEventListener(myEventNames[myCounter], myEventInfo); } } function myEventInfo(myEvent){ var myString = "Handling Event: " +myEvent.eventType; myString += "\r\rTarget: " + myEvent.target + " " +myEvent.target.name;

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209

C
HAPTER
8: Events
Working with Event Listeners
120
eventListeners
do not persist beyond the current InDesign session. To make an
eventListener
available in every InDesign session, add the script to the startup scripts folder. (For more on installing
scripts, see "Installing Scripts" in
Adobe InDesign CS5 Scripting Tutorial
.) When you add an
eventListener
script to a document, it is not saved with the document or exported to IDML.
N
OTE
:
If you are having trouble with a script that defines an
eventListener
, you can either run a script
that removes the
eventListener
or quit and restart InDesign.
eventListeners
that use handler functions defined inside the script (rather than in an external file) must
use
#targetengine "session"
. If the script is run using
#targetengine "main"
(the default), the
function is not available when the event occurs, and the script generates an error.
An event can trigger multiple
eventListeners
as it propagates through the scripting object model. The
following sample script demonstrates an event triggering
eventListeners
registered to different objects
(for the full script, see MultipleEventListeners):
#targetengine "session"
main();
function main(){
var myApplicationEventListener = app.eventListeners.add("beforeImport",
myEventInfo);
var myDocumentEventListener = app.documents.item(0).eventListeners.add
("beforeImport", myEventInfo);
}
function myEventInfo(myEvent){
var myString = "Current Target: " + myEvent.currentTarget.name;
alert(myString);
}
When you run the preceding script and place a file, InDesign displays alerts showing, in sequence, the
name of the document, then the name of the application. To remove the event listeners added by the
preceding script, run the RemoveMultipleEventListeners script.
The following sample script creates an
eventListener
for each document event and displays information
about the event in a simple dialog box. For the complete script, see EventListenersOn.
main()
function main(){
app.scriptPreferences.version = 5.0;
var myEventNames = [
"beforeQuit", "afterQuit",
"beforeNew", "afterNew",
"beforeOpen", "afterOpen",
"beforeClose", "afterClose",
"beforeSave", "afterSave",
"beforeSaveAs", "afterSaveAs",
"beforeSaveACopy", "afterSaveACopy",
"beforeRevert", "afterRevert",
"beforePrint", "afterPrint",
"beforeExport", "afterExport",
"beforeImport", "afterImport"
] ;
for (var myCounter = 0; myCounter < myEventNames.length; myCounter ++){
app.addEventListener(myEventNames[myCounter], myEventInfo);
}
}
function myEventInfo(myEvent){
var myString = "Handling Event: " +myEvent.eventType;
myString += "\r\rTarget: " + myEvent.target + " " +myEvent.target.name;