開發Metro版瀏覽器
Windows 8中的Metro程序是一種全屏應用程序,專門針對觸摸屏設備進行優化。Windows 8 Developer Preview中已經包含了一些Metro應用:
像微軟自己的一些程序,如IE、Windows Store等都有Metro版本,在即將發布的Windows 8消費者預覽版中,估計會有更多的Metro應用,到時Windows Store也會正式啟用。
在PowerShell 3.0中使用命令Get-AppxPackage –AllUsers可以查看當前安裝了哪些Metro應用:
可以看到,Metro程序安裝在C:\Program Files\Applications
該文件夾沒有權限,不能在資源管理器中查看,故使用PowerShell:
我也開始開發一些Metro程序,為公司產品的Metro版本試水。
這次我開發的是一個Metro版本的瀏覽器,類似于IE 10。
最終運行效果:
1、使用VS 11 Developer Preview創建一個Metro項目:
2、界面布局很簡單,第一行地址欄、工具按鈕等,下面是預覽窗口:
3、WinRT中沒有WebBrowser控件,取而代之的是WebView,MSDN上有關于此控件的大致介紹。
WebView有個Source屬性,可以設置為具體的URL,如http://www.bing.com,這樣WebView就會跳轉到指定URL。
4、WebView使用的是IE 10的內核,不支持任何插件(Flash、Silverlight),只能用HTML5。
要先設置下Internet屬性,允許跨域瀏覽,允許腳本等。
5、WebView有兩個方法比較常用
private void fn跳轉到指定Url(string v_Url) { if (!v_Url.StartsWith("http://") && !v_Url.StartsWith("https://")) { v_Url = "http://" + v_Url; } if (this.fn是否是有效Url(v_Url)) { this.wv.Navigate(new Uri(v_Url)); } else { this.wv.NavigateToString(@"<html><h3>404</h3></html>"); } }
Navigate用于跳轉到指定URL,NavigateToString用于顯示執行的HTML,這里我是顯示一個自定義的404頁面。
6、模擬了網頁后退、前進的效果,沒有做的很嚴格。具體實現看下源碼就明白了。
7、遇到一個比較棘手的問題是,在WebView中點擊一個跨域的鏈接時,會打開Metro版的IE10顯示,不能繼續在WebView中顯示,若有朋友解決了這個問題,請告之。
小結:
我寫的這個Metro版本的瀏覽器非常簡單,僅僅實現了最基本的現代瀏覽器應該具有的功能,主要想測試一下Metro程序的效果。
個人還是非常喜歡Metro應用,如果使用平板操作將會非常舒服。當Windows 8正式發布時,Metro應用將會遍地開花,希望Windows 8能將平板更加普及一下,豐富企業應用、娛樂應用的開發方式。