9

.NET winforms アプリケーションの WebBrowser コントロールに HTML を書き込むアプリケーションがあります。

インターネット設定でJavascript(またはアクティブスクリプト)が無効になっているかどうかをプログラムで検出したいと思います。

IE セキュリティ設定を照会するには、WMI などを使用する必要があると思います。

編集 #1: HTML を表示する前に JavaScript が有効になっているかどうかを知ることが重要であるため、DOM を変更して警告を表示したり、タグを使用したりするソリューションは、私の特定のケースでは適用できません。私の場合、javascript が使用できない場合は、代わりにネイティブの RichTextBox にコンテンツを表示します。また、JS が有効になっているかどうかをサーバー アプリケーションに報告して、アラートを送信する管理者に 5% または 75% であることを伝えたいと考えています。のユーザーが JS を有効にしているかどうか。

4

3 に答える 3

5

@Kickahaの提案に感謝します。レジストリをチェックして設定されているかどうかを確認する簡単な方法を次に示します。おそらくこれが例外をスローする可能性がある場合があるので、必ずそれらを処理してください。

    const string DWORD_FOR_ACTIVE_SCRIPTING = "1400";
    const string VALUE_FOR_DISABLED = "3";
    const string VALUE_FOR_ENABLED = "0";

    public static bool IsJavascriptEnabled( )
    {
        bool retVal = true;
        //get the registry key for Zone 3(Internet Zone)
        Microsoft.Win32.RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3", true);

        if (key != null)
        {
            Object value = key.GetValue(DWORD_FOR_ACTIVE_SCRIPTING, VALUE_FOR_ENABLED);
            if( value.ToString().Equals(VALUE_FOR_DISABLED) )
            {
                retVal = false;
            }
        }
        return retVal;
    }

注:このコードサンプルを短くするために(そして私はインターネットゾーンだけを気にしたので)-このメソッドはインターネットゾーンのみをチェックします。OpenSubKey行の最後にある3を変更して、ゾーンを変更できます。

于 2012-08-31T04:52:39.467 に答える
2

ポップアップのポップアップに問題がある場合は、解決策を含めました。クライアント マシンで JavaScript を無効/有効にしたい場合 (または、有効/無効の場合は単に読み取り/クエリを実行したい場合) は、その回答を含めました。あなたのためにも、ここに行きます:

無効にするポップアップ メッセージを選択してください。アラート メッセージの場合は、これを試してください。ウィンドウまたはフレーム オブジェクトを特定のニーズに明らかに解決します。最上位のドキュメントを想定していますが、iframe が必要な場合は、window.frames(0) を使用してアクセスできます。最初のフレームなど... (JavaScript の部分)... WB が Web ブラウザー コントロールであると仮定した場合のコードを次に示します...

WB.Document.parentWindow.execScript "window.alert = function () { };", "JScript"

上記のコードは、ページ全体の読み込みが完了した後にのみ実行する必要があります。これを行うのは非常に難しいことを理解しています (完全な証明バージョンはまだ公開されていません)。これで、「webbrowser」および「webbrowser-control」とラベル付けされた以前の回答のいくつかを読むと、これを正確に行う方法に関するヒントを収集できますが、.confirm JavaScript をキャンセルしたい場合は、目前の質問に戻ります。 window.alert を window.confirm に置き換えるだけです (もちろん、使用しているドキュメント階層に到達するための正しいオブジェクトで window. オブジェクトを修飾します)。上記の手法と新しい IE9 の .prompt メソッドを使用して .print メソッドを無効にすることもできます。

JavaScript を完全に無効にする場合は、レジストリを使用してこれを行うことができます。また、Web ブラウザー コントロールがメモリにロードされる前にレジストリを変更する必要があり、レジストリを変更するたびに (オン/オフ)、Web ブラウザー コントロールをリロードする必要があります。そしてメモリに入れます(または単にアプリケーションを再起動します)。

レジストリ キーは\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\- キー名は1400で、無効にする値は 3、有効にする値は 0 です。

もちろん、Zones キーの下には 5 つのゾーンがあるため、確実にアクティブなゾーンまたはすべてのゾーンに対して変更する必要があります。ただし、js ダイアログのポップアップ メッセージを抑制したいだけであれば、これを行う必要はありません。

どうやって行くのか教えてください。さらにお手伝いできることがあれば教えてください。

于 2012-08-31T10:44:13.627 に答える
1

ここに提案があります-デフォルトとして警告をあなたのウェブページにエンコードしてください。その要素を削除するページの読み込み時に実行されるJavaScriptを作成します。javascriptの実行が許可されていない場合は、警告が表示されます。

クライアント側のHTMLJavaScriptをDOMと対話するようにコーディングしてから長い時間がかかるため、少し古くなっている可能性があります。つまり、詳細を修正する必要がありますが、一般的な考え方を理解していただければ幸いです。

<script>
document.getElemntByID("noJavascriptWarning").innerHTML="";
</script>

そしてあなたのHTML本文で

<DIV id="noJavascriptWarning" name="noJavaScriptWarning">Please enable Javascript</DIV>
于 2012-08-29T04:45:55.660 に答える