Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #13745

Re: JSObject.call(method, ARGS) with Safari

From "Richard Maher" <maher_rj@hotspamnotmail.com>
Newsgroups comp.lang.java.programmer
Subject Re: JSObject.call(method, ARGS) with Safari
Date 2012-04-21 21:30 +0800
Organization HTTP *is* The Box - Let's think outside
Message-ID <jmucp3$enq$1@speranza.aioe.org> (permalink)
References <jmu16i$ij2$1@speranza.aioe.org> <jmu1cm$j47$1@speranza.aioe.org> <jmu6kv$det$1@news.albasani.net> <49ykr.15811$FQ1.5673@newsfe12.iad>

Show all headers | View raw


"Arved Sandstrom" <asandstrom3minus1@eastlink.ca> wrote in message 
news:49ykr.15811$FQ1.5673@newsfe12.iad...
> On 12-04-21 08:45 AM, Lew wrote:
>
> I agree that an SSCCE is called for in any case.
>

Thanks for the replies. I'll cut it down to just the jsobject.call(m, ARGS) 
test tomorrow, but for now: -

import java.applet.Applet;
import netscape.javascript.JSObject;
import netscape.javascript.JSException;

    public class JavaJSTest extends Applet {

        JSObject              laundry;
        Object                rinseArgs[]   = new Object[1];

        public synchronized void init() {

            System.out.println("Starting Tests. . .");

            JSObject window = JSObject.getWindow(this);

            final String createLaundry =
                  "(function(){" +
                      "function Laundry(){" +
                          "this.launder = function(JSObject){" +
                                            "alert('In Laundry');" +
                                            "return JSObject;}}" +
                      "return new Laundry();" +
                      "})();";

            laundry = (JSObject)window.eval(createLaundry);

            // Test function calls
            String str = (String) window.eval("getString();");
            if (!str.equals("Hello, world!")) {
                throw new RuntimeException(); // test failed
            }
            Number num = (Number) window.eval("getNumber()");
            if (num.intValue() != 5) {
                throw new RuntimeException(); // test failed
            }
            // Test field access
            JSObject res = (JSObject) window.eval("new cities();");
            if (!((String) res.getMember("b")).equals("Belgrade")) {
                throw new RuntimeException(); // test failed
            }
            res.setMember("b", "Belfast");
            if (!res.getMember("b").equals("Belfast")) {
                throw new RuntimeException(); // test failed
            }
            // Test CALL
            Boolean ans = (Boolean)res.call("d", null);
            System.out.println("ans is " + ans.booleanValue());

            // Test CALL with param
            rinseArgs[0] = new String("A param");
            Boolean pans = (Boolean)res.call("e", rinseArgs);
            System.out.println("param ans is " + pans.booleanValue());

            // Test array access
            res = (JSObject) window.eval("getTestArray();");
            if (!((String) res.getSlot(0)).equals("foo") ||
                !((String) res.getSlot(1)).equals("bar")) {
                throw new RuntimeException(); // test failed
            }
            res.setSlot(1, "baz");
            if (!((String) res.getSlot(1)).equals("baz")) {
                throw new RuntimeException(); // test failed
            }
            res.setSlot(2, "qux"); // Define new array element
            if (!((String) res.getSlot(2)).equals("qux")) {
                throw new RuntimeException(); // test failed
            }
            res.removeMember("b");
            try {
                res.getMember("b");
//                throw new RuntimeException(); // test failed
                System.out.println("This browser does not support 
removeMember");  // test failed
            } catch (JSException e) {
                // Member should not be present any more
            }

            System.out.println(". . .Tests complete");
        }

        public void hello() {
            System.out.println("Hello");
        }

        public boolean testCall(JSObject blob) {
            System.out.println("In method - testCall()");

            JSObject              cleanBuf;
            boolean               retVal        = false;

            try {
                rinseArgs[0] = blob;
                System.out.println("before launder");
                try {
                    cleanBuf = (JSObject)laundry.call("launder", rinseArgs);
                }
                catch (Exception e) {
                    throw e;
                }
                System.out.println("after launder");
//                System.out.println("ans is " + abc.booleanValue());

                System.out.println("blob.call()");
                Boolean resp = (Boolean)cleanBuf.call("e",null);
                System.out.println("Setting retVal");
                retVal = resp.booleanValue();
                } catch (JSException ex) {
                    Exception ex2 = (Exception)ex.getWrappedException();
                    if(ex2 != null) {
                        System.out.println(ex2.getClass().getName() + " " + 
ex2.getMessage());
                    } else {
                        System.out.println(ex.getClass().getName() + " " + 
ex.getMessage());
                    }
                } catch (Exception ex) {
                    System.out.println(ex.getClass().getName() + " " + 
ex.getMessage());
                }
            return retVal;
        }

    }


And the HTML: _

<html>
<head>
    <script language="javascript">
    var app;

    function load() {
      var objectTag = "<object ";

      if (/Internet Explorer/.test(navigator.appName)) {
        objectTag = objectTag +
            'classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" ';
      } else {
        objectTag = objectTag +
            'type="application/x-java-applet" ';
      }

      objectTag = objectTag +
          'width= "0" height= "0" id="app">' +
          '<param name="codebase"        value="http://127.0.0.1">' +
          '<param name="code"            value="JavaJSTest">' +
          '<param name="java_version"    value="1.6+">' +
          '<param name="mayscript"       value="true">' +
          '<param name="scriptable"      value="true">' +
     '</object>';

      var appletDiv              = document.createElement("div");
      appletDiv.innerHTML        = objectTag;

      try {
        document.body.appendChild(appletDiv);
        chanG = document.getElementById("app");
      }
      catch(err) {
          alert("Unable to append applet: -\n" +
              (err.description||err.message));
          chanG = null;
      };

      if (chanG == null) {
        throw new Error("Was unable to initialize the applet");
      };

      var x = new cities();
      var y = x.e();
      alert("X = "+y);
    }

    // Return a string value to Java
    function getString() {
       return "Hello, world!";
    }

    function getNumber() {
       return 5;
    }

    // Make an object with city names and an index letter.
    function cities() {
       var msg = "Good Bye";
       this.a = "Athens";
       this.b = "Belgrade";
       this.c = "Cairo";
//       this.e = function(){alert(msg); return true;};
//       this.e = function(){if (window.console) {console.log("Message is " 
+ msg)};return true;};
//       this.e = function(){throw("A Wobbly");return true;};
     }

     cities.prototype = {
       d : function(){alert("hello"); return true;}
      ,e : function(){alert("good-Bye"); return true;}
      ,f : function(param){alert("Param = " + param); return true;}
     };

     function getTestArray() {
        return [ "foo", "bar" ];
     }

     function doIt() {
      var list = new cities();
      var reply = chanG.testCall(list);
      alert("Reply = "+reply);
     }

    </script>
</head>
<body onload="load();">

STUFF

<input type="Button" id="btn1" value="HitMe" onclick="doIt();"/>

</body>
</html>

Thanks agin

Cheers Richard Maher 

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

JSObject.call(method, ARGS) with Safari "Richard Maher" <maher_rj@hotspamnotmail.com> - 2012-04-21 18:12 +0800
  Re: JSObject.call(method, ARGS) with Safari "Richard Maher" <maher_rj@hotspamnotmail.com> - 2012-04-21 18:15 +0800
    Re: JSObject.call(method, ARGS) with Safari Lew <noone@lewscanon.com> - 2012-04-21 04:45 -0700
      Re: JSObject.call(method, ARGS) with Safari Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-04-21 09:57 -0300
        Re: JSObject.call(method, ARGS) with Safari "Richard Maher" <maher_rj@hotspamnotmail.com> - 2012-04-21 21:30 +0800
          Re: JSObject.call(method, ARGS) with Safari Lew <noone@lewscanon.com> - 2012-04-21 13:07 -0700
        Re: JSObject.call(method, ARGS) with Safari Lew <noone@lewscanon.com> - 2012-04-21 13:00 -0700
  Re: JSObject.call(method, ARGS) with Safari Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2012-04-21 15:48 -0700
    Re: JSObject.call(method, ARGS) with Safari "Richard Maher" <maher_rj@hotspamnotmail.com> - 2012-04-22 12:46 +0800
      Re: JSObject.call(method, ARGS) with Safari "Richard Maher" <maher_rj@hotspamnotmail.com> - 2012-04-22 15:07 +0800
        Re: JSObject.call(method, ARGS) with Safari Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-04-22 21:17 -0300
          Re: JSObject.call(method, ARGS) with Safari Richard Maher <maherrj@googlemail.com> - 2012-04-22 23:40 -0700
            Re: JSObject.call(method, ARGS) with Safari Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-04-23 20:40 -0300

csiph-web