2

わかりました、私は非常に苛立たしい問題を抱えています。Webページを解析しているので、必要な情報を取得するためにjavascriptを実行する必要があります。

Form f = new Form();
WebBrowser w = new WebBrowser();
w.Navigate(url);
f.Controls.Add(w);
f.ShowDialog();
HtmlElementCollection hc = w.Document.GetElementsByTagName("button");

これは機能し、ボタン要素を正常に取得できますが、これを実行するたびにポップアップが表示されます。とてもうるさい。ポップアップはjavascriptベースであり、ボタン要素情報を取得するにはJavascriptを実行する必要があります。これがポップアップのスクリプトです。

<script>
var evilPopup = (getCookieVar("markOpen","PromoPop") == 1);
if (evilPopup != 1) 
{
    PromoPop = window.open('/browse/info.aspx?cid=36193','Advertisement', 'width=365,height=262,screenX=100,screenY=100');

if (PromoPop) 
    {
       PromoPop.blur();
       window.focus();
       setCookieVar("markOpen","PromoPop","1");             
    }
}
</script>

ベーンでForms.WebbrowserコントロールにCookieを追加しようとしましたが、イライラして諦めました。NoAllowNavagateプロパティと他のすべてを無駄に設定してみました。

誰か助けてもらえますか?また、フォームを開かなくてもConsole.AppからDomDocument情報を取得する方法はありますか?

ありがとう

4

4 に答える 4

6

WebBrowserコンポーネントには、CancelEventArgsを含むNewWindowイベントがあります。したがって、次のようなハンドラーを追加するだけです。

void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
    e.Cancel = true;
}

javascriptがポップアップウィンドウを開こうとすると、イベントがトリガーされてキャンセルされます。

于 2009-04-25T18:44:48.260 に答える
0

手っ取り早い解決策は、WebClientを使用してhtmlを一時ファイルにダウンロードし、広告スクリプトをstring.Emptyに置き換えて、ファイルをコントロールにロードすることです。

于 2009-04-25T18:59:45.133 に答える
0

ドキュメントにJavascriptを挿入できますか?これを追加できます:

window.open = function() { return false; }
于 2009-04-25T18:38:47.773 に答える
0

新しいウィンドウを自動的にキャッチするには、SHDocVw.dll を試してください。

        private SHDocVw.WebBrowser_V1 Web_V1;

        // write it on form load event

        Web_V1 = (SHDocVw.WebBrowser_V1)this.webBrowser1.ActiveXInstance;

        Web_V1.NewWindow += new SHDocVw.DWebBrowserEvents_NewWindowEventHandler(Web_V1_NewWindow);


        private void Web_V1_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
        {
            Processed = true; //Stop event from being processed

            //Code to open in same window
            //this.webBrowser1.Navigate(URL);

            //Code to open in new window instead of same window
            frmEBeyanname Popup = new frmEBeyanname();
            Popup.webBrowser1.Navigate(URL);
            Popup.Show();
        }

さよなら

于 2009-10-01T11:39:36.453 に答える