0

我正在开发 Windows Phone 8 PhoneGap 应用程序。我希望动态创建应用栏,使其在初始页面中不可见,并且在登录页面中不会有菜单项“LogOut”。我想通过获取 webview 的当前 URL 并相应地显示应用程序栏来实现这一点。所以,我想知道如何获取 PhoneGap webview 的当前 URL 并相应地创建应用栏。我已经通过http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh394044(v=vs.105).aspx

4

2 回答 2

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);
        }

参考:https ://github.com/dev-mobile/cordova-starter/blob/master/win7_cordova_starter/wp7_CordovaStarter/MainPage.xaml.cs

于 2013-08-23T11:00:08.093 回答
0
URI currentURI = ((App)Application.Current).RootFrame.CurrentSource;

应该返回当前视图的 url。这应该放在发生导航的函数中,以便在每次更改页面时调用。然后,您可以使用特定于 URI 类的 toString() 函数将其转换为字符串,并查看它是否与您要查找的页面 url 匹配。如果确实如此,则动态调整应用栏。考虑到您浏览了给出的链接,我假设您已经知道如何执行此操作,但如果您不这样做,请发表评论。

于 2013-08-23T04:57:38.540 回答