windowsphone中WebBrowser中的頁面按級回退功能
在windowsphone應用開發中,我們會常用到WebBrowser這個控制元件。它可以瀏覽網頁,並且可以在當前開啟的網頁中單擊超級連結,繼續開啟新的網頁。但是在操作中會存在這樣一個問題,當按"Back"鍵希望返回前一個(上一級)網頁時,程式會直接跳出當前的網頁瀏覽器,直接返回到上一頁面(客戶端程式頁面)。也就是說"Back"鍵會使程式返回程式的上一個PhoneApplicationPage,而不是WebBrowser中已開啟過的前一個網頁。
1.網頁回退
我們普遍的做法會首先禁用掉Back鍵的功能,然後通過網頁js的程式碼來實現網頁的回退功能。在js有兩種方法可以實現網頁回退:
(1)Browser.InvokeScript( "eval" , "history.go(-1)" );
(2)Browser.InvokeScript( "eval" , "history.back()" );
2.退出網頁/瀏覽器
上面的方法是不能使網頁退出,而返回到上一級的程式頁面的。那麼在網頁回到最初始頁面時,是要啟用Back的功能。為了在回退網頁時禁用Back鍵,而在退出網頁時啟用Back,可以使用一個計數器來模擬開啟的網頁棧---
計數器初始化為1。開啟新的網頁時,計數器加一;回退網頁時,計數器減一。當計數器記錄為1時,此時按Back鍵可以實現網頁的退出。
下面是簡要程式碼:
- using System;
- using System.Windows.Navigation;
- using Microsoft.Phone.Controls;
- namespace CustomControls
- {
- public partial class ClockPage : PhoneApplicationPage
- {
- #region Data Members
- // 用於點選開啟網頁(非back鍵操作引起的)次數的統計
- private int m_PageStackCount = 0;
- // 標誌是否為按Back鍵引起的網頁跳轉
- private bool m_BackKey = false;
- #endregion
- #region Constructor
- public ClockPage()
- {
- InitializeComponent();
- }
- #endregion
- #region Protected Methods
- protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
- {
- // 返回到上一級頁面,此方法無法使網頁退出,也就是最後只能退回到首頁
- Browser.InvokeScript("eval", "history.back()");
- m_BackKey = true;
- if (m_PageStackCount > 1)
- {
- e.Cancel = true;
- m_PageStackCount -= 1;
- }
- else
- {
- // 退出網頁
- e.Cancel = false;
- }
- }
- private void Browser_Navigated(object sender, NavigationEventArgs e)
- {
- if (m_BackKey == false)
- {
- m_PageStackCount += 1;
- }
- else
- {
- m_BackKey = false;
- }
- }
- #endregion
- }
- }
相關文章
- uniapp頁面中的按鈕使用分享功能APP
- 在WPF中嵌入WebBrowser視覺化頁面Web視覺化
- webbrowser 控制 頁面Web
- C#防止WebBrowser在新視窗中開啟連結頁面C#Web
- js/jquery禁止頁面回退JSjQuery
- [轉]讀取webBrowser中網頁程式碼Web網頁
- WebBrowser頁面與WinForm互動技巧WebORM
- 移動端頁面功能之——長按事件事件
- 小議jsp頁面中的下載功能(轉)JS
- C#中WebBrowser的使用C#Web
- 將分頁功能從JSP頁面中獨立出來JS
- 回退上一個頁面時如何保證之前的資料還在,即回退時不重新整理頁面
- 微信小程式開發中按下自己手機的返回按鍵是直接退出小程式而不是返回上級頁面微信小程式
- 前端頁面中iOS版微信長按識別二維碼的bug前端iOS
- 零頁面機制在缺頁中斷中的作用
- 微信瀏覽器內禁止頁面回退返回瀏覽器
- 微信小程式開發關於分享功能中怎麼定義同一個頁面中不同的按鈕觸發不同的分享內容,或者右上角的分享和頁面中分享微信小程式
- aspx頁面中點選按鈕傳遞給Silverlight,並且頁面不重新整理
- 脈脈App引導頁面中推薦功能的實現推測APP
- WebSphere Portal中,實施拖拽功能造成頁面閃動的解決方法Web
- 在web工程中設定首頁的頁面Web
- Nuxt Kit 中的頁面和路由管理UX路由
- ThinkPHP框架中自定義錯誤頁面和提示頁面PHP框架
- Asp.Net中動態頁面轉靜態頁面ASP.NET
- html頁面轉PDF的功能HTML
- Angular 應用如何回退到之前曾經瀏覽過的頁面Angular
- 提升現代web app中的頁面效能WebAPP
- js父頁面使用iframe中的函式JS函式
- ng中的路由和單頁面應用路由
- Web頁面中5種超酷的Hover效果Web
- 自定義jsp中的錯誤頁面JS
- Web頁面中的“門”—Web端登入頁的設計Web
- PHP中實現頁面跳轉PHP
- 防止頁面按鈕多次點選
- 去掉手機頁中按鈕點選背景
- 一文徹底解決H5頁面中長按儲存圖片H5
- 在WPF中定製WebBrowser快捷選單Web
- Windows Phone 中WebBrowser開啟新視窗WindowsWeb