JavaScript 函数回调

我们经常会用到客户端与Web项目结合开发的需求,那么这样就会涉及到在客户端执行前台动态脚本函数,也就是函数回调,本文举例来说明回调函数的过程。

首先创建了一个Web项目,很简单的一个页面,只有一个button与textbox,代码与效果如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebTest.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        #txtValue
        {
            height: 63px;
            width: 543px;
        }
        #Button1
        {
            height: 33px;
            width: 541px;
        }
        #btnTest
        {
            width: 539px;
        }
    </style>
    <script language="javascript" type="text/javascript" src="EasyUI/jquery-1.8.0.min.js"></script>
    <script language="javascript" type="text/javascript">
        $(document).ready(function () {
            $("#btnTest").bind("click", function () {
                window.external.CheckUser();
            });
        });
        function CallBackFun(e) {
            $("#txtValue").val(e);
         }
    </script>
</head>
<body>
    <input id="txtValue" type="text" />
    <br />
    <br />
    <input id="btnTest" type="button" value="Go" />
</body>
</html>

CheckUser:表示客户端的一个方法。

CallBackFun:表示客户端回调的函数。

在btnTest的点击事件里面执行客户端的CheckUser方法,客户端回调CallBackFun函数的时候,给ID为txtValue的文本框进行赋值,赋值内容则是从回调函数中返回的内容。

下面创建一个客户端程序,界面也很简单,仅有一个webBrowser1按钮,代码与界面如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Security.Permissions;

namespace WindowsFormsApplication1
{
    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    [System.Runtime.InteropServices.ComVisibleAttribute(true)]
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public WebBrowser Browser { get { return this.webBrowser1; } }

        private void Form1_Load(object sender, EventArgs e)
        {
            webBrowser1.ObjectForScripting = this;
            webBrowser1.Navigate("http://localhost:8008/default.aspx");
        }

        public void CheckUser()
        {
            WindowsFormsApplication1.Comm.Global.Main = this;
            bool result=true;
            /*
             * 这之间可以实现任意的逻辑,最后将结果赋值给result即可
             *
             *
             */

            if (result) //判断结果
            {
                WindowsFormsApplication1.Comm.Global.Main.Invoke(new MethodInvoker(delegate()
                {
                    WindowsFormsApplication1.Comm.Global.Main.Browser.Document.InvokeScript("CallBackFun", new object[] { "777" });
                }));
            }
        }
    }
}

webBrowser1的URL(http://localhost:8008/default.aspx)为我本地电脑的IIS站点。

我们通过webBrowser1的InvokeScript方法来进行回调函数CallBackFun,返回的是一个object对象,这里返回“777”字符串。

运行之后,点击按钮,效果如下:

可以看出来,客户端已经成功回调了函数CallBackFun,并且已经将客户端的返回值“777”传递给了前台。

如果您觉得有用,请帮忙顶一下,谢谢!!

时间: 2024-10-31 04:36:39

JavaScript 函数回调的相关文章

javascript 函数初探 (四)--- 回调函数

回调函数 既然函数与任何被赋值给变量的数据是相同的,那么她当然可以像其他数据那样被定义.删除.拷贝,以及当成参数传递给其它函数. 我们定义一个函数,这个函数有两个函数类型的参数,然后他会分别执行这两个参数所执行的函数. function her(){ return a() + b(); } function one(){ return 1; } fucntion two(){ return 2; } her(one, two) // 3 实际上,我们也可以直接用匿名函数(即函数表达式)来替代on

告诉你什么是javascript的回调函数

在javascript中回调函数非常重要,它们几乎无处不在.像其他更加传统的编程语言都有回调函数概念,但是非常奇怪的是,完完整整谈论回调函数的在线教程比较少,倒是有一堆关于call()和apply()函数的,或者有一些简短的关于callback的使用示例. 函数也是对象 想弄明白回调函数,首先的清楚地明白函数的规则.在javascript中,函数是比较奇怪的,但它确确实实是对象.确切地说,函数是用Function()构造函数创建的Function对象.Function对象包含一个字符串,字符串包

ABP展现层——Javascript函数库

ABP展现层——Javascript函数库 点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之21.ABP展现层——Javascript函数库 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate ASP.NET Boil

[转]WEB开发者必备的7个JavaScript函数

我记得数年前,只要我们编写JavaScript,都必须用到几个常用的函数,比如,addEventListener 和 attachEvent,并不是为了很超前的技术和功能,只是一些基本的任务,原因是各种浏览器之间的差异造成的.时间过去了这么久,技术在不断的进步,仍然有一些JavaScript函数是几乎所有Web程序员必备的,或为了性能,或为了功能. 防止高频调用的debounce函数 这个 debounce 函数对于那些执行事件驱动的任务来说是必不可少的提高性能的函数.如果你在使用scroll,

WEB开发者必备的7个JavaScript函数

防止高频调用的debounce函数 这个 debounce 函数对于那些执行事件驱动的任务来说是必不可少的提高性能的函数.如果你在使用scroll, resize, key*等事件触发执行任务时不使用降频函数,也行你就犯了重大的错误.下面这个降频函数 debounce 能让你的代码变的高效: // 返回一个函数,that, as long as it continues to be invoked, will not // be triggered. The function will be c

3、JavaScript函数

知识点 函数定义 函数调用 传参 函数的返回值 变量的作用域 匿名函数 回调函数 自调函数 内嵌函数 递归调用 闭包 函数定义 来看下面的代码. function print(){ console.log('123'); } 上面的代码定义了一个函数 - function 定义函数的关键字 - print 函数名 - {} {}中的内容为函数体,即console.log('123'); 函数调用 print(); 使用上面的代码可以调用函数,函数的调用方法为funcName([arg1,arg2

JavaScript函数及其prototype

一.定义 函数可以通过声明定义,也可以是一个表达式. (1)函数声明式: 分号是用来分隔可执行JavaScript语句,由于函数声明不是一个可执行语句,所以不以分号结束. function a(){ console.log('bbb'); } (2)函数表达式: 函数表达式以分号结尾,因为它是一个执行语句. var a = function(){ console.log('aaa'); } (3)声明式变体: var a = function a(){ console.log('bbb'); }

JavaScript语言精粹读书笔记 - JavaScript函数

JavaScript是披着C族语言外衣的LISP,除了词法上与C族语言相似以外,其他几乎没有相似之处. JavaScript 函数: 函数包含一组语句,他们是JavaScript的基础模块单元,用于代码复用.信息隐藏和组合调用. 函数用于指定对象的行为. 函数对象Functions: 在JavaScript中函数就是对象.对象是"键值"对的集合并拥有一个连接到原型对象的隐藏连接. 对象字面量产生的对象连接到Object.prototype.函数对象连接到Function.prototy

JavaScript函数和对象提高!!!!!!

JavaScript函数和对象提高!!!!!! 主要内容介绍 函数 函数的概念 函数的参数 函数的返回值 函数的作用域 变量提升和函数提升 函数参数传递方式 对象 什么是JavaScript对象 创建对象的两种方式 对象属性的基本操作 创建自定义对象 函数的4种调用方式(简单介绍) 一.函数 函数小测验 函数复习测试题 1.1 函数基本概念 1.1.1 什么是函数 函数是定义一次但可以调用或执行任意多次的一段JavaScript代码. 函数也叫做方法(了解概念) 当一个函数在一个对象上被调用的时