3

Webbrowser コントロールを使用している winforms アプリケーションがあります。

ページにアクセスすると、このページには次のようなコードがあります。

(document).ready(function(){
window.print();
}

しかし、このページで JavaScript を実行したくありません。

webBrowser1_DocumentCompleted イベントで、ドキュメント テキストからスクリプト要素を削除しようとしていますが、適切なイベント、関数などが見つかりませんでした..

これに対する回避策はありますか?

4

2 に答える 2

2

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

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

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

ただし、あなたの場合、印刷を無効にしたいので、単に交換.alertして.printください。

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

新しい IE9 ポップアップを含む 4 つのポップアップを取り除く定数文字列 (VB で宣言) を次に示します。さらに、onbeforeunload イベントを取り除き、実行されるすべてのページでこれらすべてを実行します。フレームがある場合は、フレームで実行する必要はありません。親ドキュメントで実行するだけで十分です。ここで (VB6 で宣言されています)、_ は読みやすくするために配置した行の継続用であり、& は文字列の連結用であり、; は javascript では、次のコードを別のコード行と見なすことを意味します。このようにして、物理的な 1 行で多くのコード行 (以下では 5 行だと思います) を実行できます。

Public Const DEFAULT_JS_TO_RUN_AFTER_EACH_PAGE_LOAD As String = _
& "window.alert = function () { }; window.confirm = function () { }; " _
& "window.prompt = function () { }; window.print = function () { }; " _
& "window.onbeforeunload = function () { };"

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

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

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

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

于 2012-09-01T18:05:37.080 に答える
2

WebBrowser を初期化するときは、これを使用します

webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.Navigate(url);

これがうまくいくことを願っています。

于 2012-09-04T05:25:25.743 に答える