2012-05-22 12 views
15

¿Cuál es el uso de window.external? ¿Esto se usa para llamar a las funciones/métodos del lado del servidor en C#/VB.NET (ASP.NET) desde JavaScript? ¿Puedes por favor dirigirme en la dirección correcta?¿Cuál es el uso de window.external?

Gracias

error:

<%@ 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 

Respuesta

27

Esto se toma en gran parte de este MSDN article pero window.external se puede utilizar para permitir que su WebBrowserControl para ejecutar métodos públicos de su cliente de Windows Forms.

Por ejemplo, en el formulario que puede tener una función como:

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

Y en el html cargado en su WebBrowserControl es posible que tenga un botón que se parece a:

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

Así que en Con respecto a su pregunta de "¿Esto se usa para llamar a las funciones del lado del servidor?", su formulario no está "al lado del servidor", pero sí le permite llamar al código C#/VB.NET de su formulario desde una página web incrustada.

+0

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

user1054625

+0

Public Class WebForm1 Hereda System.Web.UI.Page secundario protegido SayHello (nombre ByVal Como cadena) Response.Write ("Hello: -" & name) End Sub End Class – user1054625

+0

Obteniendo un error. ¿Podrías decirme por qué? – user1054625

11

Es una convención utilizada por algunos de los proveedores de navegadores/sistemas operativos para facilitar la comunicación entre JavaScript que se ejecuta dentro del navegador y el código que se ejecuta "fuera" del navegador en el dispositivo o máquina del usuario.

Por ejemplo, si ha escrito una aplicación nativa para Android o Windows Phone que aloja un control de navegador web, el marco móvil nativo circundante podría proporcionar window.external como una forma de ejecutar javascript en la página web dentro de la web control para llamar a la funcionalidad del código nativo de su aplicación. (Un ejemplo de cómo este tipo de cosas para Android se puede encontrar aquí: Listen to javascript function invocation from java - Android)

Si, por el contrario, usted está buscando para la comunicación entre el código JavaScript que se ejecuta en el navegador web del usuario y el código C# que se ejecuta en su servidor entonces querrá investigar llamadas de estilo AJAX (que generalmente tiene muy poco que ver con window.external). Ejemplos de configuración tales cosas se pueden encontrar en el sitio ASP.Net. p. http://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-web-services

Cuestiones relacionadas