0

WinForms C# で記述された Web ブラウザー自動化プロジェクトがあります。ナビゲーション中に、ブラウザが「このページを離れてもよろしいですか?」と確認するポイントがあります。現れる。このポップアップが必要なので、Web サイトのコードから削除することはできません。つまり、自動化アプリでオーバーライドする必要があります。

これを行う方法を知っている人はいますか?

4

3 に答える 3

2

そしてここにスムーズな解決策がありました..

mshtml への参照を追加し、mshtml を使用して追加します。

Browser.Navigated += 
    new WebBrowserNavigatedEventHandler( 
        (object sender, WebBrowserNavigatedEventArgs args) => { 
            Action<HtmlDocument> blockAlerts = (HtmlDocument d) => { 
                HtmlElement h = d.GetElementsByTagName("head")[0]; 
                HtmlElement s = d.CreateElement("script"); 
                IHTMLScriptElement e = (IHTMLScriptElement)s.DomElement; 
                e.text = "window.alert=function(){};"; 
                h.AppendChild(s); 
            }; 
            WebBrowser b = sender as WebBrowser; 
            blockAlerts(b.Document); 
            for (int i = 0; i < b.Document.Window.Frames.Count; i++) 
                try { blockAlerts(b.Document.Window.Frames[i].Document); } 
                catch (Exception) { }; 
        } 
    ); 
于 2012-05-03T17:20:25.823 に答える
0

もう追加する必要はありません。それを試してみてください。魔法のように働きます。^_^

private void webNavigated(object sender, WebBrowserNavigatedEventArgs e)
    {
        HtmlDocument doc = webBrowser.Document;
        HtmlElement head = doc.GetElementsByTagName("head")[0];
        HtmlElement s = doc.CreateElement("script");
        s.SetAttribute("text", "function cancelOut() { window.onbeforeunload = null; window.alert = function () { }; window.confirm=function () { }}");
        head.AppendChild(s);
        webBrowser.Document.InvokeScript("cancelOut");
    }
于 2016-10-11T06:14:55.193 に答える
0

ウェブサイトのコードを変更できますか?

ObjectForScriptingその場合、ポップアップを表示するかどうかを決定する前に、Web サイトのコードをチェックして(場合によってはオブジェクトに問い合わせて) 、オブジェクトを公開して、オブジェクトwindow.externalが見つからない場合は、オブジェクトが正常に使用されていると見なし、それを示しています。

于 2012-04-27T10:09:58.257 に答える