Jaka jest różnica między app.doScript a $ .evalFile?
Jedyna różnica, jaką do tej pory znalazłem: Jeśli skrypt jest uruchamiany przezapp.doScript
zwraca błąd, plik i numer linii błędu są nadpisywane przez plik i numer liniiapp.doScript
połączenie.
Czy są jakieś inne różnice, o których powinienem wiedzieć?
Oto przykładowy kod, który pokazuje powyższą różnicę:
Najpierw uruchom InDesign:
c:
cd "C:\Program Files\Adobe\Adobe InDesign CS6 Server x64"
InDesignServer.com -port 12345
pause
Następnie utwórz plik wsadowy, aby uruchomić skrypt:
c:
cd "C:\Program Files\Adobe\Adobe InDesign CS6 Server x64"
sampleclient -host localhost:12345 -server "C:/doscript_vs_evalfile/call_doScript.jsx"
pause
To jest „call_doScript.jsx”, który wywoła app.doScript.
try {
app.doScript(new File("/c/doscript_vs_evalfile/called_by_doScript.jsx"));
"Success";
}
catch (e) {
var sError = "Encountered " + e.name + " #" + e.number + " at line " + e.line + " of file " + e.fileName + "\n" + e.message;
app.consoleout(sError);
sError;
}
To jest „named_by_doScript.jsx”, który jest wywoływany przez poprzedni skrypt:
app.consoleout("Running called_by_doScript.jsx");
// Produce error
var a = b;
Uruchom plik wsadowy i to jest wynik:
02/25/13 13:30:03 INFO [javascript] Executing File: C:\doscript_vs_evalfile\call_doScript.jsx
02/25/13 13:30:03 INFO [javascript] Executing File: C:\doscript_vs_evalfile\called_by_doScript.jsx
02/25/13 13:30:03 INFO [script] Running called_by_doScript.jsx
02/25/13 13:30:03 INFO [script] Encountered ReferenceError #2 at line 2 of file /c/doscript_vs_evalfile/call_doScript.jsx
b is undefined
Zauważ, że powyższy błąd jest nieprawidłowy. Błąd został spowodowany przez linię 3 wywołanego_by_do skryptu, a nie przez linię 2 call_doScript.
Teraz zmodyfikuj skrypty, aby użyć $ .evalFile, a otrzymamy ten wynik:
02/25/13 13:32:39 INFO [javascript] Executing File: C:\doscript_vs_evalfile\call_evalFile.jsx
02/25/13 13:32:39 INFO [script] Running called_by_evalFile.jsx
02/25/13 13:32:39 INFO [script] Encountered ReferenceError #2 at line 3 of file /c/doscript_vs_evalfile/called_by_evalFile.jsx
b is undefined
Zauważ, że błąd jest teraz zgłaszany we właściwej lokalizacji.
Edytować:
Znalazłem rzadką dokumentację. To naprawdę nie odpowiada na moje pytanie, ale opisuje różne opcjonalne parametry.
doScript: Adobe InDesign CS6 Przewodnik po skryptach: JavaScript (link bezpośredni)
Patrz strona 16, „Używanie metody doScript”
evalFile: Przewodnik po narzędziach Javascript: Adobe Creative Suite 5
Patrz strona 219