我正在开发Windows Phone 8 PhoneGap应用。我希望动态创建App Bar,使其在初始页面中不可见,并且在登录页面中不会有菜单项“LogOut”。我想通过获取webview的当前URL并相应地显示应用栏来实现这一目标。所以,我想知道如何获取PhoneGap webview的当前URL并相应地创建应用栏。我已经通过了http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394044(v=vs.105).aspx
答案 0 :(得分:1)
我通过this.CordovaView.Browser.Navigated += Browser_Navigated;
处理事件来实现目标,其中Browser_Navigated函数如下所示。
private void Browser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
Console.WriteLine("Browser_Navigated:" + sender);
String currentURL = "";
Boolean isAbsolute = this.CordovaView.Browser.Source.IsAbsoluteUri;
ApplicationBar = new ApplicationBar();
ApplicationBar.Mode =ApplicationBarMode.Minimized;
if (isAbsolute)
{
currentURL = this.CordovaView.Browser.Source.AbsoluteUri;
ApplicationBarMenuItem clearCache = new ApplicationBarMenuItem();
clearCache.Text = "Reset user settings";
ApplicationBar.MenuItems.Add(clearCache);
clearCache.Click += new EventHandler(OnClearCache);
if (! currentURL.EndsWith("LoginSP.aspx"))
{
ApplicationBarMenuItem logOut = new ApplicationBarMenuItem();
logOut.Text = "Log out";
ApplicationBar.MenuItems.Add(logOut);
logOut.Click += new EventHandler(OnLogOut);
}
}
else
{
currentURL = "x-wmapp1:" + this.CordovaView.Browser.Source.OriginalString;
ApplicationBar.IsVisible = false;
}
Console.WriteLine("currentURL:" + currentURL);
}
答案 1 :(得分:0)
URI currentURI = ((App)Application.Current).RootFrame.CurrentSource;
应该返回当前视图的url。这应放在导航发生的功能中,以便每次更改页面时调用。然后,您可以使用特定于URI类的toString()函数将其转换为字符串,并查看它是否与您要查找的页面网址相匹配。 如果是,则动态调整应用栏。我假设你已经知道如何做到这一点,考虑到你通过给出的链接,但如果你不喜欢请评论。