我正在使用phonegap为windows phone 8制作应用程序。我使用window.external.Notify([commandname])
从我的javacript调用了C#函数。它正确地调用了C#代码。但我想从我的C#代码返回一个字符串值回到该javascript函数。
为解决方案 -
我尝试使用InvokeScript()
方法调用javascript函数并将结果作为参数传递给它。但它给了我OutOfMemoryException
。
我的C#代码是 -
public MainPage()
{
InitializeComponent();
this.CordovaView.Loaded += CordovaView_Loaded;
CordovaView.Browser.ScriptNotify+=Browser_ScriptNotify;
}
private void Browser_ScriptNotify(object sender, NotifyEventArgs e)
{
string commandStr = e.Value.ToString();
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
//get the key data
if (commandStr == kToken + "-get" || commandStr == kMSISDN + "-get" || commandStr == kTermsAccepted + "-get" || commandStr == kUserDetails + "-get")
{
string[] keys = commandStr.Split('-');
key = keys[0];
if (!settings.Contains(key))
{
sampledata = null;
}
else
{
sampledata = (string)settings[key];
}
this.CordovaView.Browser.IsScriptEnabled = true;
this.CordovaView.Browser.InvokeScript("mydata", data);
}
else(commandStr == "removedata")
{
settings.Clear();
}
}
private void CordovaView_Loaded(object sender, RoutedEventArgs e)
{
this.CordovaView.Loaded -= CordovaView_Loaded;
}
}
}
以下是我的javascript代码 -
function getDataForKey(key) {
window.external.Notify(key + '-get');
senddata: return data;
}
function mydata(inputdata)
{
alert(inputdata);
data = inputdata;
alert('Invoked script is running');
goto: senddata;
}
请帮我解决这个问题。我是phonegap的新手。所以我无法理解如何从javascript调用C#,反之亦然。我也在寻找phonegap文档中的解决方案,但没有任何解脱。 提前谢谢。
答案 0 :(得分:0)
如果你想使用PhoneGap / Cordova并以独立于平台的方式做你尝试做的事情,那么cordova插件机制可以提供帮助。你应该实现自己的cordova插件:
Windows原生端实现细节为here。