【问题标题】:how to call c# code from javascript in phonegap windows phone如何在phonegap windows phone中从javascript调用c#代码
【发布时间】:2012-05-03 06:52:21
【问题描述】:

嗨,我是 windows phone 更新鲜。谁能告诉我如何在 Phonegap(windows mobile)中的 javascript 中调用 C# 方法。谢谢。

我收到以下错误。

错误:“无法找到命令 :: MyCommand”。

这是我的代码隐藏文件

using System;
using System.Collections.Generic;
using System.Linq; using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.IO;
using System.Windows.Media.Imaging;
using System.Windows.Resources;
using WP7CordovaClassLib.Cordova.Commands;
namespace CSharpToJS
{
public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

    private void GapBrowser_Loaded(object sender, RoutedEventArgs e)
    {

    }

}
namespace WP7GapClassLib.PhoneGap.Commands
{
    public class MyCommand : BaseCommand
    {
        public void DoThis(string args)
        {
            // TODO: 
        }
    }
}
}

这是我的 Index.html 文件:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, height=device-height, initial-    scale=1.0, maximum-scale=1.0, user-scalable=no;" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Cordova WP7</title>
<link rel="stylesheet" href="master.css" type="text/css" media="screen" title="no title" charset="utf-8" />
<script type="text/javascript" charset="utf-8" src="cordova-1.5.0.js"></script>
<script type="text/javascript">
    document.addEventListener("deviceready", onDeviceReady, false);
    // once the device ready event fires, you can safely do your thing! -jm
    function onDeviceReady() {
        document.getElementById("welcomeMsg").innerHTML += "Cordova is ready! version=" + window.device.cordova;
        console.log("onDeviceReady. You should see this message in Visual Studio's output window.");
        var args = { "message": "whatever" };
        Cordova.exec(null, null, "MyCommand", "DoThis", args);
    }
  </script>
 </head>
  <body>
 <h1>
    Hello Cordova</h1>
<div id="welcomeMsg">
</div>
</body>
</html>

【问题讨论】:

  • 不要将 Java 与 Javascript 混淆 :)

标签: javascript windows-phone-7 cordova


【解决方案1】:

您应该能够使用plugin architecturePhoneGap.exec() 方法完成此操作。

在 C# 中创建一个继承自 BaseCommand 的类(您还必须使用这个特定的命名空间):

namespace WP7GapClassLib.PhoneGap.Commands
{
    public class MyCommand : BaseCommand
    {
      public void DoThis(string args)
      {
        // TODO: 
      }
    }
}

从 Javascript 调用此方法:

var args = {"message":"whatever"};    
PhoneGap.exec(null, null, "MyCommand", "DoThis", args);

【讨论】:

  • 嗨 Johansson,谢谢你,我尝试了上面的代码,但它给出了“phonegap is undefined”之类的错误,我需要做任何更改吗?
  • 我在尝试这段代码时遇到了错误,你能解释一下上面的代码吗?我得到了错误?提前谢谢
  • 你使用过那个确切的命名空间吗?
  • 是的,尽管它给出了错误。我需要进行任何外部更改吗?谢谢。
  • 那你可能在调用方法之前还没有定义args。这是基本的东西。我已经更新了我的答案。
【解决方案2】:

您可以将 Notify 方法与 ScriptNotify 事件处理程序结合使用,详见以下博客文章:-

http://blogs.msdn.com/b/glengordon/archive/2011/11/21/phonegap-on-wp7-tip-2-script-interaction.aspx

【讨论】:

    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多