У меня есть приложение WP8 Cordova, которое имеет одну страницу локально, а затем перенаправляет на сервер для дальнейшей функциональности. На обеих страницах есть API-интерфейс кордовы JS, и все работает хорошо.
Кроме того, когда я снова хочу вернуться на местную стартовую страницу. Любые привязки к нему (указывающие на x-wmapp0:www/index.html
) не работают на стороне HTML.
Кроме того, любые трюки с плагинами и вызовы CordovaBrowser.Navigate()
приводят к ошибкам UnauthorizedAccessException
.
Резерв был для меня, чтобы попытаться вернуться в историю браузера следующим образом:
window.history.go(-window.history.length + 1);
Но это ничего не делает, если я вообще провожу время на удаленных страницах. Так что это тоже не применимо!
Есть ли достойный способ попасть на стартовую страницу? С помощью С# или иным образом?
Таким образом, материал UnauthorizedAccessException
возник из проблем с потоками. (VS Express для WP иногда может скрыть детали исключения довольно хорошо.)
Это полный плагин, который выполняет перенаправление с опрятной элегантностью.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using WPCordovaClassLib.Cordova;
using WPCordovaClassLib.Cordova.Commands;
namespace Cordova.Extension.Commands
{
public class Jumper : BaseCommand
{
/** Instruct the browser component to go to beginning. */
public void goHome(string unused)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
var webview = WebViewHandler.getInstance().webView;
webview.CordovaBrowser.Navigate(webview.StartPageUri);
});
}
}
}
WebViewHandler
- синглтон для совместного использования Cordova WebView для плагинов, описанных в другом ответе SO (спасибо @MikeBryant!).
history.go()
. Что, черт возьми, IEMobile делает там между страницами ...