2012-05-22 18 views
15

Jaki jest pożytek z window.external? Czy to jest używane do wywoływania funkcji/metod po stronie serwera w C#/VB.NET (ASP.NET) z JavaScript? Czy możesz wskazać mi właściwy kierunek?Jaki jest pożytek z window.external?

Dzięki

Błąd:

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

Odpowiedz

27

ta jest w dużej mierze pochodzą z tego MSDN article ale window.external mogą być stosowane, aby umożliwić WebBrowserControl wykonać metody publiczne kliencie aplikacji Windows Forms.

Na przykład w swojej formie może mieć funkcję, takie jak:

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

A w html załadowane do WebBrowserControl może masz przycisk, który wygląda tak:

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

So In w odniesieniu do pytania "Czy to jest używane do wywoływania funkcji po stronie serwera?", twój formularz nie jest "stroną serwera", ale pozwala ci wywołać kod C#/VB.NET twojego formularza z osadzonej strony internetowej.

+0

<% @ Page Language = "VB" AutoEventWireup = "false" kodzie = "WebForm1.aspx.vb" Dziedziczy = "WebApplication1.WebForm1" %>

user1054625

+0

Klasa publiczna WebForm1 Inherits System.Web.UI.Page Protected Sub sayHello (nazwa ByVal As String) Response.Write ("Hello: -" i nazwa) Koniec Sub Koniec klasy – user1054625

+0

Wystąpił błąd. Czy możesz mi powiedzieć dlaczego? – user1054625

11

Jest to konwencja wykorzystywana przez niektórych dostawców przeglądarki/systemu operacyjnego w celu ułatwienia komunikacji między javascriptem działającym w przeglądarce i kodem działającym "na zewnątrz" przeglądarki na urządzeniu użytkownika lub komputerze.

Na przykład, jeśli napisałeś natywną aplikację dla systemu Android lub Windows Phone, który obsługuje kontrolkę przeglądarki internetowej, otaczający natywny szkielet mobilny może zapewniać window.external jako sposób na uruchamianie javascript na stronie internetowej w sieci. kontrolować, by wywołać funkcję kodu natywnego Twojej aplikacji. (Przykład tego, jak takie rzeczy dla Androida można znaleźć tutaj: Listen to javascript function invocation from java - Android)

Jeśli natomiast chcesz komunikować się między javascriptem uruchomionym w przeglądarce użytkownika a uruchomionym kodem C# Twój serwer będzie wtedy chciał badać wywołania w stylu AJAX (które zwykle mają bardzo niewiele wspólnego z Window.external). Przykłady konfiguracji takich rzeczy można znaleźć na stronie ASP.Net. np. ! http://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-web-services

Powiązane problemy