25 Replies Latest reply on Oct 3, 2018 6:54 AM by Trevorׅ

    Include remote .js-file in script-file (and use it's variables)

    carlp33822801 Level 1

      'm trying to access a remote .jsfile within an inDesign script to use it's variables. I found functions for including js-files locally but haven't found a good way to include.

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

      var testVar = "it works!";

      myscript.js, including locally (working):

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

      myscript.js, including locally including remotely (not working):

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

      Error message

      I also found this snippet, this alert works (alerts the content of the file, i.e. "var testVar = "it works!;") but I don't know how to use the vars in my alert function below:

      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 hyle = new HTTPFile("http://remote-site.com/test.js ");

       

       

      alert(hyle.getFile());

       

       

      hyle.getFile();