/// <summary> /// Инициировать вызов функции (управляемой/неуправляемой) /// </summary> /// <param name="function">Функция</param> /// <param name="context">Контекст</param> /// <param name="args">Параметры</param> /// <param name="copyResult">Копировать результат работы функции в стек вычислений вызывающей функции</param> /// <param name="onCompleteCallback">Вызывается по завершении работы функции</param> internal void CallFunction( JSFunction function, JSObject context, JSValue[] args, bool copyResult, Action onCompleteCallback = null) { if (function.IsNative) { var result = function.Invoke(this, context, CurrentFrame.LocalScope, args); if (copyResult) { CurrentFrame.Push(result); } } else { var managedFunction = (JSManagedFunction)function; CurrentFrame = new CallStackFrame( CurrentFrame, VM, managedFunction, context, new LocalVariableScope(managedFunction.OuterScope), args, copyResult, onCompleteCallback); } }
private void blvStops_SelectedIndexChanged(object sender, EventArgs e) { btnMoveUp.Enabled = this.blvStops.Items.Count > 0 && this.blvStops.SelectedIndices.Count > 0 && this.blvStops.SelectedIndices[0] > 0; btnMoveDown.Enabled = this.blvStops.Items.Count > 0 && this.blvStops.SelectedIndices.Count > 0 && this.blvStops.SelectedIndices[0] < blvStops.Items.Count - 1; if (this.blvStops.SelectedIndices.Count > 0) { JSFunction isBouncing = (JSFunction)this.webView.EvalScript("isBouncing"); if (isBouncing != null) { if ((bool)isBouncing.Invoke(this.webView.GetDOMWindow(), new object[] { this.blvStops.SelectedIndices[0] }) == false) { JSFunction bounceMarker = (JSFunction)this.webView.EvalScript("bounceMarker"); bounceMarker.Invoke(this.webView.GetDOMWindow(), new object[] { this.blvStops.SelectedIndices[0] }); } } } }