Sự khác biệt duy nhất tôi đã tìm thấy cho đến nay: Nếu tập lệnh được chạy bởi app.doScript
trả về lỗi, tệp và số dòng của lỗi bị ghi đè bởi tệp và số dòng của cuộc gọi app.doScript
.
Có bất kỳ khác biệt nào khác mà tôi nên biết không?
Dưới đây là mẫu mã đó chứng tỏ sự khác biệt trên:
Đầu tiên chạy InDesign:
c:
cd "C:\Program Files\Adobe\Adobe InDesign CS6 Server x64"
InDesignServer.com -port 12345
pause
Tiếp theo, tạo một tập tin batch để chạy một kịch bản:
c:
cd "C:\Program Files\Adobe\Adobe InDesign CS6 Server x64"
sampleclient -host localhost:12345 -server "C:/doscript_vs_evalfile/call_doScript.jsx"
pause
Đây là "call_doScript. jsx ", sẽ gọi 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;
}
Đây là "called_by_doScript.jsx", được gọi là bởi kịch bản trước:
app.consoleout("Running called_by_doScript.jsx");
// Produce error
var a = b;
Chạy tập tin thực thi và đây là kết quả:
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
Chú ý rằng lỗi ở trên không chính xác. Lỗi được gây ra bởi dòng 3 của hàm gọi_by_doScript, không phải dòng 2 của call_doScript.
Bây giờ thay đổi kịch bản để sử dụng $ .evalFile, và chúng tôi nhận được kết quả này:
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
Chú ý rằng các lỗi ngay bây giờ được báo cáo tại địa điểm chính xác.
Edit:
tôi tìm thấy tài liệu thưa thớt. Nó không thực sự trả lời câu hỏi của tôi, nhưng nó mô tả các tham số tùy chọn khác nhau.
doScript:Adobe InDesign CS6 Scripting Guide: JavaScript (direct link)
Xem trang 16, "Sử dụng phương pháp doScript"
evalFile:Javascript Tools Guide: Adobe Creative Suite 5
Xem trang 219
Tôi không biết câu trả lời, nhưng tôi sẽ liên doanh với app.doscript, bạn có thể chạy tệp js cũng như tệp vbs. – bgmCoder