/// <summary> /// Evaluate javascript in the current context. /// </summary> /// <param name="jsScript"></param> /// <param name="jsval"></param> /// <returns></returns> public bool EvaluateScript(string jsScript, out string result) { JSVal ptr = new JSVal(); IntPtr globalObject = AutoJSContext.JS_GetGlobalForScopeChain(_cx); bool ret = AutoJSContext.JS_EvaluateScriptForPrincipals(_cx, globalObject, _jsPrincipals, jsScript, (uint)jsScript.Length, "script", 1, ref ptr); IntPtr jsStringPtr = JS_ValueToString(_cx, ptr); result = Marshal.PtrToStringAnsi(JS_EncodeString(_cx, jsStringPtr)); return(ret); }
static extern IntPtr JS_ValueToString(IntPtr cx, JSVal v);
static extern bool JS_EvaluateScriptForPrincipals(IntPtr cx, IntPtr obj, IntPtr principals, string src, UInt32 length, string filename, UInt32 lineno, ref JSVal jsval);