window.external有什么用?

时间:2012-05-22 00:27:50

标签: c# javascript asp.net vb.net

window.external有什么用?这用于从JavaScript调用C#/ VB.NET(ASP.NET)中的服务器端函数/方法吗?你能指点我正确的方向吗?

由于

错误:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1" %>

<!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>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input type="button" name="button1" value="Click" onclick="javascript:window.external.SayHello('Mike');" />
    </div>
    </form>
</body>
</html>

Public Class WebForm1
    Inherits System.Web.UI.Page

    Public Sub SayHello(ByVal name As String)
        Response.Write("Hello :- " & name)
    End Sub

End Class

2 个答案:

答案 0 :(得分:30)

这主要来自此MSDN article,但window.external可用于允许WebBrowserControl执行客户端Windows窗体应用程序的公共方法。

例如,在您的表单中,您可能具有以下功能:

public void HelloFromTheForm()
{
    MessageBox.Show("Hi client, thanks for calling me!");
}

在加载到WebBrowserControl的html中,您可能会看到一个如下按钮:

<button onclick="window.external.HelloFromTheForm()">
    Say hi to the form
</button>

因此,关于“这用于调用服务器端功能吗?”的问题,您的表单不是“服务器端”,但它确实允许您从表单中调用C#/ VB.NET代码嵌入式网页。

答案 1 :(得分:13)

这是一些浏览器/操作系统供应商用来促进浏览器中运行的javascript与用户设备或机器上浏览器“外部”运行的代码之间的通信。

例如,如果您编写了一个托管Web浏览器控件的Android或Windows Phone本机应用程序,则周围的本机移动框架可能会提供window.external作为在Web控件中的Web页面上运行javascript的方式呼唤应用程序的本机代码功能。 (可以在此处找到有关Android如何使用此类内容的示例:Listen to javascript function invocation from java - Android

另一方面,如果您希望在用户的Web浏览器上运行的javascript与服务器上运行的C#代码之间进行通信,那么您将需要调查AJAX样式调用(通常只有很少的调用)与window.external有关)。 可以在ASP.Net站点找到设置此类内容的示例。 例如http://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-web-services