Скрипты inDesign: Включить удаленный .js-файл в скрипт-файл (и использовать его переменные) - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь получить доступ к удаленному .jsfile в скрипте inDesign, чтобы использовать его переменные.Я нашел функции для локального включения js-файлов, но не нашел хорошего способа включить.

http://remote -site.com / test.js :

var testVar = "it works!";

myscript.js, в том числе локально (работает):

app.doScript(new File("/Users/Popmouth/test.js"));
alert(testVar);

myscript.js, в том числе локально, удаленно (не работает):

app.doScript(new File("http://remote-site.com/test.js"));
alert(testVar);

Error message

Я также нашел этот фрагмент, это предупреждение работает (оповещает содержимое файла, т.е. "var testVar =" оно работает !; "), но я не знаю, как использовать переменные вмоя функция оповещения ниже:

var HTTPFile = function (url,port) {

          if (arguments.length == 1) {

                    url = arguments[0];

                    port = 80;

          };

          this.url = url;

          this.port = port;

          this.httpPrefix = this.url.match(/http:\/\//);

          this.domain = this.httpPrefix == null ? this.url.split("/")[0]+":"+this.port :this.url.split("/")[2]+":"+this.port;

          this.call = "GET "+ (this.httpPrefix == null ? "http://"+this.url : this.url)+" HTTP/1.0\r\nHost:" +(this.httpPrefix == null ? this.url.split("/")[0] :this.url.split("/")[2])+"\r\nConnection: close\r\n\r\n";

          this.reply = new String();

          this.conn = new Socket();

          this.conn.encoding = "binary";





          HTTPFile.prototype.getFile = function(f) {

                    var typeMatch = this.url.match(/(\.)(\w{3,4}\b)/g);

                    if (this.conn.open(this.domain,"binary")) {

                              this.conn.write(this.call);

                              this.reply = this.conn.read(9999999999);

                              this.conn.close();

                    } else {

                              this.reply = "";

                    }

                    return this.reply.substr(this.reply.indexOf("\r\n\r\n")+4);;

          };

}



var remoteFile = new HTTPFile("http://remote-site.com/test.js");

alert(.getFile());

эта функция

1 Ответ

0 голосов
/ 21 сентября 2018

Хорошо, я пошел на adobe-forums и получил следующую строку, которая заменяет app.doScript(new File("/Users/Popmouth/test.js"));:

var remoteCode = 'http://remote-site.com/test.js';  //location of your remote file
var script = app.doScript("do shell script \"curl 'remoteCode'\"".replace("remoteCode", remoteCode), ScriptLanguage.APPLESCRIPT_LANGUAGE);  

// Set script args  
app.scriptArgs.setValue("scriptArg1", "Hello");  
// Set environmental vars  
$.setenv("envVar1", "World");  
// Run the "remote" script  
app.doScript(script, ScriptLanguage.JAVASCRIPT);  
...