示例#1
0
 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.");
     }
 }
示例#2
0
        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);
            }
        }
示例#3
0
		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.");
			}

		}