public void RegisterJSHandler(string name, ClrCall handler) { if (!functions.Contains(name)) { functions.Add(name, handler); } else { throw new Exception("A handler with this name already exists."); } }
private void webControl_ECMAStatus(object sender, EventArgs e) { if (!webControl.Title.StartsWith("JSCall")) { return; } string[] call = webControl.Title.Split(delimiter); if (call.Length < 2) { throw new Exception("Too few parameters in call from JavaScript."); } string function = call[1]; string returnTo = call[2]; string[] args = (string[])System.Array.CreateInstance(typeof(String), (call.Length - 3)); System.Array.Copy(call, 3, args, 0, (call.Length - 3)); if (!functions.Contains(function)) { throw new Exception("Unknown function name called from JavaScript."); } ClrCall clrCall = (ClrCall)functions[function]; if (returnTo.Length == 0) { clrCall(args); } else { string[] result = { clrCall(args) }; JSCall(returnTo, null, result); } }
public void RegisterJSHandler (string name, ClrCall handler) { if (!functions.Contains (name)) { functions.Add (name, handler); } else { throw new Exception ("A handler with this name already exists."); } }