web-dev-qa-db-ja.com

window.externalの用途は何ですか?

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
20
user1054625

これは主にこれから取られます 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>

したがって、「これはサーバー側の関数を呼び出すために使用されますか?」という質問に関して、フォームは「サーバー側」ではありませんが、埋め込まれたWebページからフォームのC#/ VB.NETコードを呼び出すことができます。

31
vpiTriumph

これは、ブラウザ内で実行されているjavascriptと、ユーザーのデバイスまたはマシン上のブラウザの「外部」で実行されているコードとの間の通信を促進するために、一部のブラウザ/オペレーティングシステムベンダーによって利用されている規約です。

たとえば、AndroidまたはWebブラウザーコントロールをホストするWindows Phoneのネイティブアプリケーションを作成した場合、周囲のネイティブモバイルフレームワークは、java.scriptをアプリのネイティブコード機能を呼び出すためのWebコントロール内のWebページ(Androidのそのような方法の例はここにあります: 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

13
lzcd