Have you looked at using JS_DefineFunction from the SpiderMonkey API to add C functions to the Javascript environment. I'm doing something similar in my embedding project, and it seems to work really well.
--Richard I've found the following code "Olaf" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hi all, > > I've implemented my app with embedded Gecko, and it works fine. Now I > want to use some advanced JavaScript to control things. That means that > I want to expose an interface from my application to JavaScript. In the > embedding FAQ it mentions the method AddCategoryEntry with parameter > JAVASCRIPT_GLOBAL_PROPERTY_CATEGORY. But I can't seem to access any > object that way. > > Also I would like my application to call JS. Especially JS functions > that are defined on the currently loaded page. I can execute global > functions like alert() fine, but nothing that has been defined in HTML. > > I use this to execute my JS: > > nsCOMPtr<nsIDocShell> theDocShell(do_GetInterface(iWebBrowser)); > if (theDocShell) { > nsCOMPtr<nsIScriptGlobalObjectOwner> > theGlobalObjectOwner(do_GetInterface(theDocShell)); > if (theGlobalObjectOwner) { > nsIScriptGlobalObject *theGlobalObject = > theGlobalObjectOwner->GetScriptGlobalObject(); > nsIScriptContext *theScriptContext = > theGlobalObject->GetContext(); > nsEmbedString theScript(aScript); > nsIPrincipal *thePrincipal = nsnull; > PRBool IsUndefined; > nsresult rv = theScriptContext->EvaluateString(theScript, nsnull, > thePrincipal, "", 1, nsnull, &theReturnValue, &IsUndefined); > } > } > _______________________________________________ dev-embedding mailing list [email protected] https://lists.mozilla.org/listinfo/dev-embedding
