Not sure if this is in the lines of what you need.
But this is more or less how I execute javascript from C++ in Mozilla:
/** Convert a std::string in UTF8 to Mozilla UTF16 string */
//inline nsEmbedString
inline nsString
toAStringUTF16 (const std::string& sString ) ///< UTF8 std::string to
convert
{
return NS_ConvertUTF8toUTF16( sString.c_str() );
}
/** Convert a Mozilla UTF16 string (nsEmbedString) to a std::string in
UTF8 */
inline std::string
toStdStringUTF8 (const nsString& aString ) ///< Mozilla UTF16
string
to convert
{
return NS_ConvertUTF16toUTF8(aString).get();
}
bool executeJavascriptString(
nsCOMPtr<nsIScriptContext> pIScriptContext,
const std::string& sScript, ///< [in] String with
script to
execute
std::string& sScriptReturnValue ) ///< [out] Return value of
script
(if any)
{
nsIPrincipal* thePrincipal = nsnull;
nsString script= toAStringUTF16( sScript );
PRBool bUndefined;
nsString sReturnValue;
nsresult rv = pIScriptContext->EvaluateString(
script,
// NS_LITERAL_STRING("bob();"),
nsnull, thePrincipal, "", 1,
JSVERSION_DEFAULT,
// JSVERSION_1_8,
&sReturnValue, &bUndefined );
sScriptReturnValue = toStdStringUTF8( sReturnValue );
return !static_cast<bool>(bUndefined != 0);
}
/// Call the JS evaluate function
nsCOMPtr <nsIDOMWindow> piMyDOMWindow; // = initialize to you dom
window
nsCOMPtr<nsIScriptGlobalObject>
pIScriptGlobalObject( do_GetInterface(piMyDOMWindow) );
nsCOMPtr<nsIScriptContext> pIScriptContext ( pIScriptGlobalObject-
>GetContext() );
std::string sRetVal;
executeJavascriptString (pIScriptContext, "alert('hey!');",
sRetVal );
_______________________________________________
dev-embedding mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-embedding