Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #13745
| 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> |
"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 | Next — Previous in thread | Next in thread | Find similar | Unroll 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