在開始之前要先祝賀一下本站終於可以在網誌上放置AdSense了
事隔七年,七年前因為違反google的規定而被逐出這個計畫
這次的教訓,讓我寫一半還會沒貼出來的外掛心得,更不太敢發表出來了
初來到台北,由於沒什麼朋友,所以假日都在研究寫遊戲外掛
而在寫外掛同時,還寫出了一個很邪惡的木馬程式
這些心得應該沒機會分享出來了吧!!那就只好分享比較正向的東西。
今天要講Phone 7的WebBrowser運用
1.首先是最典型的開啟網頁
先從ToolBox拉出WebBrowser控制項,然後只要一行指令就OK了

[c]this.webBrowser1.Navigate(new Uri("http://learn-house.idv.tw"));[/c]

其中webBrowser1要按照你在XAML裡的名字做更改

2.再來當載入或開啟完網頁後,如果你有要做進一步的事情,可以用下面的方式來處動事件

[c]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)
{
//任何當網頁載完後你想做的事
}[/c]

3.像我的話就常將載入完的結果輸出成html的字串觀看,這時候就加入一行指令將載完後的網頁輸出成原始碼

[c]void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
string strWebContent = webBrowser1.SaveToString();
//strWebContent就是原始碼字串內容
}[/c]

4.如果哪天,你有自己的html字串要用WebBrowser控制項顯示,你可以用下列的指令

[c]this.webBrowser1.NavigateToString(strWebContent);
//strWebContent即html字串[/c]

5.但這篇的重點來了,你會發現中文的地方都變亂碼了,目前解法有幾種,在這一篇連結的評論有提到
但我個人還是偏愛該作者的做法,寫一個函式去做轉換,不然就等Microsoft何時解決這個問題囉!

[c]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;
}[/c]

之後只要將字串先用此函式轉換後就可以丟入NavigateToString

[c]this.webBrowser1.NavigateToString(ConvertExtendedASCII(strWebContent));[/c]

6.最後,你會發現WebBrowser很雞婆的會將顯示的網頁縮小到螢幕可以顯示的比例,然後又很機車的是又不提供可以取消的method讓你控制,你只能在螢幕double tap來放大,而要預設讓它變大,目前似乎只能透過更改顯示網頁的內容,但有些網頁又不是我們能控制的,希望以後微軟能提空放大的控制方式,目前的解法只能在網頁多加一個標籤,如下

[html]<meta name="viewport" content="user-scalable=no" />[/html]

[html]
<meta name="viewport" width="100%" />
[/html]

Leave a comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *