Какая польза от window.external?

Какая польза от window.external? Используется ли это для вызова функций/методов на стороне сервера в С#/VB.NET(ASP.NET) из JavaScript? Не могли бы вы указать мне в правильном направлении?

Спасибо

Ошибка:

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

Ответы

Ответ 1

В основном это взято из этой статьи MSDN, но window.external можно использовать, чтобы позволить WebBrowserControl выполнять общедоступные методы вашего приложения Windows Forms клиента.

Например, в вашей форме у вас может быть функция, например:

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

И в html, загруженном в ваш WebBrowserControl, у вас может быть кнопка, которая выглядит так:

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

Итак, что касается вашего вопроса "Используется ли это для вызова функций на стороне сервера?", ваша форма не "серверная", но она позволяет вам вызывать код С#/VB.NET вашей формы из встроенная веб-страница.

Ответ 2

Это соглашение, используемое некоторыми поставщиками браузера/операционной системы для облегчения связи между javascript, запущенным в браузере, и кодом, запущенным "снаружи" браузера на пользовательском устройстве или машине.

Например, если вы написали собственное приложение для Android или Windows Phone, на котором размещен элемент управления веб-браузером, окружающая собственная мобильная инфраструктура может предоставить window.external как способ работы javascript на веб-странице в веб-элементе управления для вызова собственной функциональности кода вашего приложения. (Пример того, как такие вещи для Android можно найти здесь: Прослушать вызов функции javascript из java - Android)

Если, с другой стороны, вы хотите установить связь между javascript, запущенным на веб-браузере пользователя, и кодом С#, запущенным на вашем сервере, тогда вам будет нужно исследовать вызовы стиля AJAX (что обычно очень мало делать с window.external). Примеры создания таких вещей можно найти на сайте ASP.Net. например http://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-web-services