2

かなり巧妙な Web サイトが、TCP 接続を介して Shockwave Flash を介してサイトの最新情報を更新している状況があります。受信したデータは JavaScript を介してページに更新されるため、最新のデータを取得するにはブラウザが必要です。継続的なリクエストで Web サイトにアクセスしようとすると、a) 禁止され、b) 実際には最新のデータではなく、最後に更新された基本フレームワークのみが取得されます。

そのため、スクリプトを有効にしてブラウザーを実行する必要があります。

私の最初の質問は、.NET で標準の WPF WebBrowser を使用すると、標準の IE、Chrome、または Firefox では得られない次の警告が表示されることです。これを引き起こしているのは何ですか? また、サイトのスクリプトを実行できるようにしながら、それを抑制/許可するにはどうすればよいですか?

ここに画像の説明を入力

私の2番目の質問は、これを行うためのより良い方法があるか、またはWebBrowserコントロールに代わるより良い方法はありますか?

  • スクリプトの実行を許可する

  • 少なくともテキスト形式で返される DOM または html とスクリプトにアクセスできます

  • WPFと互換性があります

  • 実際には表示したくないので、ブラウザを非表示にすることができます。

これまでのところ、DOMへのアクセスを許可していないようで、テストしたときにWPFウィンドウが気に入らなかったWebKit.NETとAwesomiumを調べましたが、javascriptなしでDOMへの直接アクセスを許可しているようには見えませんでした。

他のオプションはありますか (スクリプトをハッキングする以外に)?

ありがとうございました

4

3 に答える 3

2

最終的には、WPF コントロールを維持することになり、このコードを使用して JavaScript スクリプトを挿入し、JavaScript エラーを無効にしました。を追加するMicrosoft HTML Object Library必要があります。

    private const string DisableScriptError =    @"function noError() { return true;} window.onerror = noError;";

    private void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        InjectDisableScript();
    }

    private void InjectDisableScript()
    {

        HTMLDocumentClass doc = webBrowser1.Document as HTMLDocumentClass;
        HTMLDocument doc2 = webBrowser1.Document as HTMLDocument;

        IHTMLScriptElement scriptErrorSuppressed = (IHTMLScriptElement)doc2.createElement("SCRIPT");
        scriptErrorSuppressed.type = "text/javascript";
        scriptErrorSuppressed.text = DisableScriptError;
        IHTMLElementCollection nodes = doc.getElementsByTagName("head");

        foreach (IHTMLElement elem in nodes)
        {
            HTMLHeadElementClass head = (HTMLHeadElementClass)elem;
            head.appendChild((IHTMLDOMNode)scriptErrorSuppressed);
        }
    }
于 2012-09-22T17:31:22.480 に答える
2

設定WebBrowser.ScriptErrorsSuppressed = true;

于 2012-09-21T15:29:27.090 に答える
1

WPFWebBrowserには、WinFormsコントロールとしてこのプロパティがありません。

WindowsFormsHostWPFアプリケーションでを使用し、WinFormsを使用することをお勧めしますWebBrowser(使用できるようにするためSuppressScriptErrors)。完全に信頼して実行するようにしてください。

于 2012-09-21T15:43:05.063 に答える