Socket对象的InDesign脚本编写产生了神秘的错误消息

时间:2013-01-07 21:13:46

标签: javascript adobe-indesign extendscript

我正在开发一个广播电子邮件模板,该模板会从RSS源中提取我们博客上的最新三篇文章,并将相关部分插入到文档中。

我查看了documentation,并根据File对象的一些内容,我自己的一些调试,以及InDesign forum post我了解到无法使用用于获取在线XML文件的File对象。

替代方案(不使用外部脚本,其中一个对我来说无效)似乎是使用Socket对象。所以我回到文档并从那里逐字复制/粘贴了这段代码:

reply = "";
conn = new Socket;
// access Adobe’s home page
if (conn.open ("www.adobe.com:80")) {
// send a HTTP GET request
conn.write ("GET /index.html HTTP/1.0\n\n");
// and read the server’s reply
reply = conn.read(999999);
conn.close();
}

当我运行它时,我收到了这条描述性错误消息:

Thanks for this error message, Adobe!

搜索“89858 javascript error”没有任何用处。

所以我被困住了。 Adobe的代码示例都有错误,或者更可能是我的错误。如果我不得不猜测,我猜它是某种代理问题,但我不确定,也不知道如何找出答案。

有人可以帮忙吗? Socket对象的原则对我来说很有意义,但是如果我不能让样本工作,那么我真的无处可去。

1 个答案:

答案 0 :(得分:2)

当您从函数调用返回某些对象(XML,Socket)时会发生上述错误,但返回值不会在任何地方分配。

function test() {
    var xml = new XML('<test />');
    return xml;
}
test();

以上将导致错误。要解决它,你必须在某处分配返回值。

var result = test();

尝试将所有收集所有函数调用结果。我不确定哪一个导致错误。

var reply = "";
var conn = new Socket;
// access Adobe’s home page
if (conn.open ("www.adobe.com:80")) {
    // send a HTTP GET request
    var result = conn.write ("GET /index.html HTTP/1.0\n\n");
    // and read the server’s reply
    reply = conn.read(999999);
    var close = conn.close();
}