窗口有什么用

What is the use of window.external?

本文关键字:什么 窗口      更新时间:2023-09-26

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

主要取自这篇 MSDN 文章,但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 代码。

它是一些浏览器/操作系统供应商使用的约定,用于促进在浏览器中运行的 JavaScript 与在用户设备或机器上浏览器"外部"运行的代码之间的通信。

例如,如果您为 Android 或 Windows Phone 编写了一个托管 Web 浏览器控件的本机应用程序,则周围的本机移动框架可能会提供 window.external 作为在 Web 控件内的网页上运行的 JavaScript 调用应用的本机代码功能的一种方式。(一个如何为 Android 做这些事情的例子可以在这里找到:听 java 的 javascript 函数调用 - Android (

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