我第一次尝试写Photoshop脚本,希望能有一个类似console.log的函数来输出Javascript控制台中的数组和对象值于ExtendScript Toolkit App,请问是否有相应的功能?
$.writeln()
是你要找的。有关详细信息,请参见JavaScript工具指南(PDF)。
_print('foo')
似乎可以解决问题。我知道这是老旧的东西,但最近我需要为 InDesign 脚本的某些值进行日志记录,因此我想分享我的“解决方案”。
我的第一个问题是,我甚至都不知道 $.writeln()
所输出的内容去了哪里。所以我使用了一个简单的函数来将日志记录到文档目录中的文件中。也许对某人有用。我猜这可能适用于 Photoshop 或其他 ExtendScript 环境。
我了解到 ExtendScript 不支持 JSON
方法,因此我使用了一个 polyfill。简单地将文件(在我的情况下是 json2.js
)放置在与您的 .jsx
相同的目录中即可。
#include "json2.js"; // include polyfill file
function log (input) {
if(!debug) return;
if(!JSON || !JSON.stringify) return;
var now = new Date();
var output = JSON.stringify(input);
$.writeln(now.toTimeString() + ": " + output);
var logFile = File(app.activeDocument.filePath + "/log.txt");
logFile.open("a");
logFile.writeln(now.toTimeString() + ": " + output);
logFile.close();
}
var debug = true;
log("abc 123");
log([1, 3, 4343, "ddddd", null, false]);
使用debug
变量可以快速启用或禁用输出。
write("any message");
XTools是适用于Photoshop的工具集。我发现在Mac OSX上,CS6版本的Photoshop调试器经常崩溃。
你可以在这里了解更多关于XTools的信息:http://ps-scripts.sourceforge.net/xtools.html。
它很棒!