CallFunction() public method

Invokes a function
Requires an active script context.
public CallFunction ( ) : IeJsValue
return IeJsValue
Esempio n. 1
0
        private void FreezeObject(IeJsValue objValue)
        {
            IeJsValue objectValue       = IeJsValue.GlobalObject.GetProperty("Object");
            IeJsValue freezeMethodValue = objectValue.GetProperty("freeze");

            freezeMethodValue.CallFunction(objectValue, objValue);
        }
Esempio n. 2
0
        public override object CallFunction(string functionName, params object[] args)
        {
            object result = InvokeScript(() =>
            {
                IeJsValue globalObj       = IeJsValue.GlobalObject;
                IeJsPropertyId functionId = IeJsPropertyId.FromString(functionName);

                bool functionExist = globalObj.HasProperty(functionId);
                if (!functionExist)
                {
                    throw new JsRuntimeException(
                        string.Format(CommonStrings.Runtime_FunctionNotExist, functionName));
                }

                IeJsValue resultValue;
                IeJsValue functionValue = globalObj.GetProperty(functionId);

                if (args.Length > 0)
                {
                    IeJsValue[] processedArgs = MapToScriptType(args);

                    foreach (IeJsValue processedArg in processedArgs)
                    {
                        AddReferenceToValue(processedArg);
                    }

                    IeJsValue[] allProcessedArgs = new[] { globalObj }.Concat(processedArgs).ToArray();
                    resultValue = functionValue.CallFunction(allProcessedArgs);

                    foreach (IeJsValue processedArg in processedArgs)
                    {
                        RemoveReferenceToValue(processedArg);
                    }
                }
                else
                {
                    resultValue = functionValue.CallFunction(globalObj);
                }

                return(MapToHostType(resultValue));
            });

            return(result);
        }