2013-06-21 113 views
1

我有一個Windows Mobile 6.5專業版的問題。開發了一個運行在windows mobile 6.5 classic上的應用程序,從webbrowser打開一個網站。 在專業網站在IE中正常工作,但沒有在我的應用程序中使用webbrowser工作javascript/jquery。 我覺得很奇怪,請求代理(Request.UserAgent)從專業的內容:Mozilla的/ 4.0(兼容MSIE 6.0,Windows CE的; IEMobile 7:11)Windows Mobile 6.5專業版

當經典出現以下結果:

的Mozilla/4.0(兼容MSIE 6.0時,Windows NT 5.1,Windows Phone的6.5.3.5

+0

歡迎StackOverflow上。那麼,你已經把標籤信息放在你的主題行(你不應該這麼做 - 它屬於標籤),並且似乎忘記了提問。 :-)你能否編輯你的文章並將主題行改爲更有意義的內容,並澄清問題並向我們提出一個我們可以回答的問題?謝謝。 –

+0

@RafaelTriani什麼都不起作用。如果它的代碼那麼我們需要代碼。 –

+0

@Ramhound當我使用webbrowser運行我的應用程序時,不要在網站上執行javascript/jquery。 –

回答

6

我最近偶然發現了同樣的問題。JavaScript的工作在IE,但不是在我的C#WebBrowser組件。

的解決方案是檢查HKLM \ Security \ Internet Explorer \ MSHTML註冊表項。它必須爲0以允許java網頁瀏覽器內的腳本!現在我的代碼檢查並將此reg鍵更改爲零(如果不是alreday 0),然後調用InitializeComponents()。

該鍵將以另一種方式更改瀏覽器的行爲:箭頭鍵現在不會將焦點從鏈接移動到鏈接,但它們會滾動瀏覽器視圖。

希望對你有幫助。

編輯:這裏是一個代碼示例:

using System; 
using System.Linq; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 

namespace WebBrowser 
{ 
    public partial class Form1 : Form 
    { 

    public Form1() 
    { 
     checkMSHTML(0); 
     InitializeComponent(); 
     webBrowser1.ScriptErrorsSuppressed = false; 
    } 

    private void toolBar1_ButtonClick(object sender, ToolBarButtonClickEventArgs e) 
    { 
     switch (e.Button.ImageIndex) 
     { 
      case 0: 
       webBrowser1.Url = new Uri("http://192.168.128.5/www"); 
       break; 
      case 1: 
       this.Close(); 
       break; 
     } 

    } 

    /// <summary> 
    /// check and change MSHTML rendering engine 
    /// </summary> 
    /// <param name="iVal">0 = use new IE6 engine, enable JavaScript 
    /// 1 = use old PIE engine</param> 
    /// <returns></returns> 
    bool checkMSHTML(int iVal) 
    { 
     bool bRet = false; 
     Microsoft.Win32.RegistryKey rKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"Security\Internet Explorer",true); 
     if (rKey != null) 
     { 
      int iMSHTML = (int) rKey.GetValue("MSHTML"); 
      if (iMSHTML != iVal) 
      { 
       rKey.SetValue("MSHTML", iVal, Microsoft.Win32.RegistryValueKind.DWord); 
       rKey.Flush(); 
       rKey.Close(); 
       bRet = true; 
      } 
      else 
      { 
       rKey.Close(); 
       bRet = true; 
      } 
     } 
     return bRet; 
    } 
    } 
} 
+0

約瑟夫你可以發佈如何在C#中做到這一點的例子嗎?幾天後我開始在Windows Mobile上編程,但沒有太多經驗。 Ty爲你提供幫助並幫助我。 –

+0

約瑟夫真的很感謝你!完美的作品! –

+0

@josef你真棒謝謝你,你的竅門救了我 – bviale