網頁

Google Search

2014年3月21日 星期五

2014-03-21 [筆記] 關於C# WebBrowser 的大小事 (指令碼錯誤 ScriptError , 清除Webbrowser Cookie)

今天要來記錄一下 之前用C#的WebBrowser上遇到的一些問題以及解決方法。
相信大家有使用過webbrowser的人對下面的那張圖片應該都不太陌生吧! ( 至少不陌生XD )



可能寫了一個webbrowser的小程式,但是三不五時就會跳出指令碼錯誤的訊息,而跑去看程式碼也看不出個所以,所以今天就來紀錄一下我自己的解決方法,如果大家有更好的方法也歡迎提出來互相交流。

以下是我嘗試多次出來的解決方法:

1.使用WebBrowser.ScriptErrorsSuppressed 屬性
webBrowser.ScriptErrorsSuppressed = true;
            
當設定為true時,ScriptError就會被抑制住。
不過不知道為什麼,我就算設定了還是有非常小的機率會遇到跳出Error出來,所以請繼續看下去。

不知道各位有沒有注意過,使用webbrowser上網,一樣會在Temporary Internet Files下產生檔案。而如果各位在更注意看一下會現,ScriptError的錯誤訊息好像就是因為在Temporary Internet Files下產生某些Script所以才會出現此錯誤。

所以我就想說,那如果把Temporary Internet Files下的檔案刪除呢,應該就可以再次減少Error的出現吧!所以請看第二點。

2.清除IE Cookie (C:\Users\YouID\AppData\Local\Microsoft\Windows\Temporary Internet Files)

Process process = new Process();
process.StartInfo.FileName = "RunDll32.exe";
process.StartInfo.Arguments = "InetCpl.cpl,ClearMyTracksByProcess 255";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.Start();

到目前為止我使用以上兩個方法,至今還沒有出現過錯誤訊息。
所以如果各位現在有者一樣的困惱,不訪試試看以上兩點。


最後就是如何清除webbrowser內的cookie。
起初我也以為webbrowser的cookie存放位置和IE一樣,所以只要清除Temporary Internet Files就好了,但後來發現不是這樣。

webbrowser有他自己的存放位置,但是我還是不知道在哪裡,不過我只到了如何清除webbrowser cookie的方法,也順便在此紀錄一下。

3.清除webbrowser cookie
http://stackoverflow.com/questions/912741/c-webbrowser-control-how-to-delete-cookies-from-windows-form


參考資料:
http://msdn.microsoft.com/zh-tw/library/system.windows.forms.webbrowser.scripterrorssuppressed(v=vs.110).aspx

http://www.piaoyi.org/c-sharp/c-ie-cookies-clear.html

圖片來源:
http://no2don.blogspot.com/2013/05/c-webbrowser-control.html

1 則留言:

  1. 我是改了ScriptErrorsSuppressed 屬性後是不會出現錯誤訊息,但網頁變的不完整不法正常使用
    用ie卻是正常的

    回覆刪除

歡迎大家指教 :)
如果在文章中關於技術方面有誤還請大家指證,謝謝!