在開始之前要先祝賀一下本站終於可以在網誌上放置AdSense了
事隔七年,七年前因為違反google的規定而被逐出這個計畫
這次的教訓,讓我寫一半還會沒貼出來的外掛心得,更不太敢發表出來了
初來到台北,由於沒什麼朋友,所以假日都在研究寫遊戲外掛
而在寫外掛同時,還寫出了一個很邪惡的木馬程式
這些心得應該沒機會分享出來了吧!!那就只好分享比較正向的東西。
今天要講Phone 7的WebBrowser運用
1.首先是最典型的開啟網頁
先從ToolBox拉出WebBrowser控制項,然後只要一行指令就OK了
this.webBrowser1.Navigate(new Uri("http://learn-house.idv.tw"));
其中webBrowser1要按照你在XAML裡的名字做更改
2.再來當載入或開啟完網頁後,如果你有要做進一步的事情,可以用下面的方式來處動事件
this.webBrowser1.Navigate(new Uri("http://learn-house.idv.tw")); this.webBrowser1.Navigated += webBrowser1_Navigated; void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) { //任何當網頁載完後你想做的事 }
3.像我的話就常將載入完的結果輸出成html的字串觀看,這時候就加入一行指令將載完後的網頁輸出成原始碼
void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) { string strWebContent = webBrowser1.SaveToString(); //strWebContent就是原始碼字串內容 }
4.如果哪天,你有自己的html字串要用WebBrowser控制項顯示,你可以用下列的指令
this.webBrowser1.NavigateToString(strWebContent); //strWebContent即html字串
5.但這篇的重點來了,你會發現中文的地方都變亂碼了,目前解法有幾種,在這一篇連結的評論有提到
但我個人還是偏愛該作者的做法,寫一個函式去做轉換,不然就等Microsoft何時解決這個問題囉!
private static string ConvertExtendedASCII(string HTML) { string retVal = ""; char[] s = HTML.ToCharArray(); foreach (char c in s) { if (Convert.ToInt32(c) > 127) retVal += "&#" + Convert.ToInt32(c) + ";"; else retVal += c; } return retVal; }
之後只要將字串先用此函式轉換後就可以丟入NavigateToString
this.webBrowser1.NavigateToString(ConvertExtendedASCII(strWebContent));
6.最後,你會發現WebBrowser很雞婆的會將顯示的網頁縮小到螢幕可以顯示的比例,然後又很機車的是又不提供可以取消的method讓你控制,你只能在螢幕double tap來放大,而要預設讓它變大,目前似乎只能透過更改顯示網頁的內容,但有些網頁又不是我們能控制的,希望以後微軟能提空放大的控制方式,目前的解法只能在網頁多加一個標籤,如下
<meta name="viewport" content="user-scalable=no" />
或
<meta name="viewport" width="100%" />
Place your comment