我正在使用 HTML5/JavaScript 为 WP8 开发应用程序。我在 JavaScript 中的数组变量中收集用户设置,并且非常希望保存这些以供将来使用。并将它们保存在漫游设置中以更精确。
经过一番研究,这似乎是不可能直接从 js。我发现在 Windows 8 中执行此任务的 API 调用在 WP8 下不起作用。所以我能想到的唯一解决方法是结构:
1)当我想保存数据时,我从 js
window.external.notify("LaunchSaveProcess");
向浏览器发送通知。
2) 在 XAML 文件中
<phone:WebBrowser ScriptNotify="Catch_Script_Notification" />
将通知从浏览器传递到 c#
3)在c#中捕获通知
private void Catch_Script_Notification(object sender, NotifyEventArgs e)
{ if (e.Value.StartsWith("LaunchSaveProcess")) {
//"important function"
} }
4)“重要函数”调用JavaScript中的一个方法,该方法返回用户设置数组,然后继续使用保存数据
var userSettings = Browser.InvokeScript("getSettings()");
var roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
roamingSettings.Values["settings"] = userSettings;
现在几个问题。这个模型是正确的,还是有更简单的方法?在制作通知事件时,你能以某种方式直接从 JavaScript 向 c# 传递参数吗?我可以将数组直接保存到 roamingSettings 中,还是需要将其砍掉并将所有内容分开保存?
为澄清起见,usersettings 数组是一维数组,我在其中推送带有“键”和“值”对的对象。因此,我可以使用 userSettings[i].key 和 .value 语法轻松访问循环内的内容。