7

私は cordova/phonegap を使用して Windows Phone アプリを作成しています。イベントが発生したときに C# からスクリプトを呼び出そうとしています。

とにかくこれを行うことはありますか?

これが私のクラスです。

public void register(string options)
{
        // This is executed asynchronously
        if (!TryFindChannel())
            DoConnect();
}


void httpChannel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)
{
        // Finished asynchronous task in "register" method
        Trace("Channel opened. Got Uri:\n" + httpChannel.ChannelUri.ToString());
        SaveChannelInfo();

        Trace("Subscribing to channel events");
        SubscribeToService();
        SubscribeToNotifications();

        // SEND CHANNEL URI TO JAVASCRIPT

}
4

4 に答える 4

9

試す:

webBrowser.InvokeScript("myFunction", "one", "two", "three");

InvokeScript現在読み込まれているドキュメントで定義されているスクリプト関数を実行し、その関数に文字列パラメーターの配列を渡します。
http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff402838%28v=vs.105%29.aspx

明らかJavaScriptに、ロードされたドキュメントで関数を定義する必要があります。

ビューによっては、次のように機能する場合があります。

this.CordovaView.Browser.InvokeScript("eval", new string[] { "yourJavascriptFunction(); " });
于 2013-11-12T11:08:43.660 に答える
4

確かに最善の解決策ではありませんが、私にとってはうまくいきます。

このような WebViewHandler というシングルトンクラスを作成しました

class WebViewHandler
{
    private static WebViewHandler instance;
    public bool isWebViewReady { get { return webView != null; } }
    public WPCordovaClassLib.CordovaView webView;

    private WebViewHandler()
    {

    }

    public void setWebView(ref WPCordovaClassLib.CordovaView webView)
    {
        this.webView = webView;
    }

    public static WebViewHandler getInstance()
    {
        if(instance == null){
            instance = new WebViewHandler();
        }
        return instance;
    } 
}

次に、HomePage のコンストラクターで webview を次のように設定します。

 public HomePage()
 {
      InitializeComponent();
      CordovaView.Loaded += CordovaView_Loaded;
      WebViewHandler.getInstance().setWebView(ref CordovaView); 
 }

WebView を設定したら、他のクラスから InvokeScript を呼び出すことができます。

WebViewHandler.getInstance().webView.CordovaBrowser.InvokeScript("MyJavaScriptFunctionThatIWishToCall");
于 2013-11-14T08:43:02.683 に答える
0

この例を試してください:

string str="<script>alert(\"ok\");</script>";
Page.ClientScript.RegisterStartupScript(this.GetType(), "Script", str, false);
于 2013-11-19T08:32:21.527 に答える