1

Windows Mobile 6.5 Professional に問題があります。Windows Mobile 6.5 クラシックで動作するアプリケーションを開発し、Web ブラウザーから Web サイトを開きます。Professional の Web サイトは IE では正しく動作しますが、Web ブラウザを使用したアプリケーションで javascript / jquery が動作しません。Professional のリクエスト エージェント (Request.UserAgent) の内容がおかしいことがわかりました: Mozilla/4.0 (互換性あり、MSIE 6.0、Windows CE; IEMobile 7:11)

クラシックが表示されると、次の結果が表示されます。

Mozilla/4.0 (互換、MSIE 6.0、Windows NT 5.1、Windows Phone 6.5.3.5

4

1 に答える 1

6

私は最近、同じ問題に出くわしました。JavaScript は IE では機能しますが、私の C# Web ブラウザー コンポーネントでは機能しません。

解決策は、HKLM\Security\Internet Explorer\MSHTML レジストリ キーを確認することでした。ウェブブラウザ内で JavaScript を許可するには、0 でなければなりません! これで、私のコードはこのレジストリ キーをチェックしてゼロに変更し (すでに 0 でない場合)、InitializeComponents() を呼び出します。

このキーは、別の方法でも Web ブラウザーの動作を変更します。矢印キーは、フォーカスをリンクからリンクに移動しませんが、Web ブラウザー ビューをスクロールします。

それがあなたにも役立つことを願っています。

編集:ここにコードサンプルがあります:

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;
    }
    }
}
于 2013-06-21T18:08:31.860 に答える