Thanks John: I apologize for the lame subject line , just trying to get a response (which sometimes can be tough), it won't happen again ;-).
Anwyay, okay I understand about the thread stuff now. . .thanks so much for your help. But as far as the wrappedJSObject stuff goes. . I don't see how any of the samples you pointed out apply. (Of course I could just be missing the point completely :)). The comments at http://lxr.mozilla.org/seamonkey/source/js/src/xpconnect/idl/nsIXPConnec t.idl#234 Seem to be more about a method of doing reflection on an XPCom component that is written JS. (I.E so that you can enumerate the supposed methods and properties of a particular component). This is something that I was unaware of and is useful, but doesn't really solve my problem. So then I had a look at: http://lxr.mozilla.org/seamonkey/source/modules/plugin/samples/4x-script able/script-test.html#17 Which seemed to be more about what I was looking for. In turn I changed my code to look like this: <script> function jsScriptObject(obj) { // implementation detail, to allow unwrapping. this.wrappedJSObject = obj; } jsScriptObject.prototype = { getProperty : function(name) { return new jsScriptObject(this.wrappedJSObject[name]); } , setProperty : function(name, value) { this.wrappedJSObject[name] = value; } , evaluate : function(expression) { return new jsScriptObject(eval(expression)); } , toString : function() { return this.wrappedJSObject.toString(); } , toNumber : function() { return this.wrappedJSObject.valueOf(); } , fromString : function(value) { return new jsScriptObject(value); } , fromNumber : function(value) { return new jsScriptObject(value); } }; function testNSISupportsArray() { netscape.security.PrivilegeManager .enablePrivilege("UniversalXPConnect"); const nsISupportsArray = Components.interfaces.nsISupportsArray; var x = Components.classes["@mozilla.org/supports-array;1"] .createInstance(nsISupportsArray); var t = new Object(); t.sean = "snider"; var y = new jsScriptObject(t); x.AppendElement(y); var z = x.GetElementAt(0); //NOW I should be able to access the properties I set in //y (z) through the wrapper methods (~z.getProperty("sean")) alert(z); //still displays [xpconnect wrapper nsISupports]!! alert(z.getProperty("sean")); //ERROR!!!!!!!!! /* Error: z.getProperty is not a function Source File: file:///C:/Documents%20and%20Settings/ssnider/Desktop/test_bitwise.html Line: 68 */ ///***********AAAAAAAARRRRRRRRRRGH!!!!!!!!!!!!!!!!!!************// }; </script> If you look the code I still have the same problem. Basically I am trying to hand a JS Object to an XPCom component (regardles of how the component is implemented in C or JS) and the return that same JS Object back out. Again, perhaps I am just not doing something correctly, can you tell what I am doing wrong? And again thanx a lot of the help. . . Sean Snider Software Engineer I 604-456-3429 [EMAIL PROTECTED] -----Original Message----- From: John Bandhauer [mailto:[EMAIL PROTECTED]] Sent: Saturday, December 14, 2002 4:10 PM To: [EMAIL PROTECTED] Subject: Re: PLEASE HELP, PLEASE PRETTY PLEASE [from a previous anwser to this question...] Read closely the rambling comment at: http://lxr.mozilla.org/seamonkey/source/js/src/xpconnect/idl/nsIXPConnec t.idl#234 And look at a couple of examples in .js and .html files here: http://lxr.mozilla.org/seamonkey/search?string=wrappedJSObject BTW, When asling for help, it is more polite to post with a subject line that suggests what you want rather than how much you want it. I expected to see spam based on the subject line but looked anyway. John. Sean wrote: > Can someone tell me how to unwrap a JSObject that I pass into > XPCom/XPConnect > > For example: > > netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect") ; > > > const nsISupportsArray = Components.interfaces.nsISupportsArray; > > var x = Components.classes["@mozilla.org/supports-array;1"].createInstance(nsISu pportsArray); > > var y = new Object(); > y.foo = "Hello XPConnect!"; > > x.Append(y); > > //NOW I WANT TO GET MY OBJECT BACK!!! > > var z = x.GetElementAt(0); > > alert(z) //displays [xpconnect wrapper nsISupports] > alert(z.foo) //undefined ?????????? WHY???????? > > Thanx > Sean > [EMAIL PROTECTED]
