none
WPF webBrowser 中反射出NewWindow2 后续问题 RRS feed

  • 问题

  • 由于 wpf的webBrowser内部没有触发NewWindow2 事件,所以网上搜索了一下,成功反射出了NewWindow2 ,

    见新窗口事件处理程序:

            /// <summary>
            /// 打开新窗口事件
            /// </summary>
            private void WebBrowserOnNewWindow(object sender, CancelEventArgs e)
            {
                if (!(HTMLDocument.activeElement is HTMLAnchorElement))
                {
                    HTMLIFrameClass
                    //HTMLDocument doc = HTMLDocument.activeElement.document;
                    //object j;
                    //for (int i = 0; i < doc.parentWindow.frames.length; i++)
                    //{
                    //    j = i;
                    //    var frame = doc.parentWindow.frames.item(ref j);
                    //    if (frame.name == "main")
                    //    {
                    //        MessageBox.Show(frame.document.title);
                    //    }
                    //}

                    //string url = HTMLDocument.activeElement.document.parentWindow.Frames["main"].Document.ActiveElement.GetAttribute("src");

                    return;
                }
                try
                {
                    e.Cancel = true;
                    dynamic dy = (HTMLAnchorElement)HTMLDocument.activeElement;
                    if (Address.Text == dy.href) return;
                    Address.Text = dy.href;
                    CreateNewTab(new Uri(dy.href));
                }
                catch (Exception ee)
                {
                    Console.WriteLine("WebBrowserOnNewWindow:" + ee.ToString());
                }

            }

    “if (!(HTMLDocument.activeElement is HTMLAnchorElement))”其实是一个HTMLIFrameClass,

    现在的问题是我无法获取到HTMLIFrameClass内部的我要跳转的链接,或者是HTMLBodyClass但无法获取Url,是HTMLAnchorElement就正确了


    我想获取的将要跳转的那个链接,就像winForm webBrowser的NewWindow2中的StatusText
    2013年1月8日 3:06

全部回复

  • 由于 wpf的webBrowser内部没有触发NewWindow2 事件,所以网上搜索了一下,成功反射出了NewWindow2 ,

    见新窗口事件处理程序:

            /// <summary>
            /// 打开新窗口事件
            /// </summary>
            private void WebBrowserOnNewWindow(object sender, CancelEventArgs e)
            {
                if (!(HTMLDocument.activeElement is HTMLAnchorElement))
                {
                    HTMLIFrameClass
                    //HTMLDocument doc = HTMLDocument.activeElement.document;
                    //object j;
                    //for (int i = 0; i < doc.parentWindow.frames.length; i++)
                    //{
                    //    j = i;
                    //    var frame = doc.parentWindow.frames.item(ref j);
                    //    if (frame.name == "main")
                    //    {
                    //        MessageBox.Show(frame.document.title);
                    //    }
                    //}

                    //string url = HTMLDocument.activeElement.document.parentWindow.Frames["main"].Document.ActiveElement.GetAttribute("src");

                    return;
                }
                try
                {
                    e.Cancel = true;
                    dynamic dy = (HTMLAnchorElement)HTMLDocument.activeElement;
                    if (Address.Text == dy.href) return;
                    Address.Text = dy.href;
                    CreateNewTab(new Uri(dy.href));
                }
                catch (Exception ee)
                {
                    Console.WriteLine("WebBrowserOnNewWindow:" + ee.ToString());
                }

            }

    “if (!(HTMLDocument.activeElement is HTMLAnchorElement))”其实是一个HTMLIFrameClass,

    现在的问题是我无法获取到HTMLIFrameClass内部的我要跳转的链接,或者是HTMLBodyClass但无法获取Url,是HTMLAnchorElement就正确了


    我想获取的将要跳转的那个链接,就像winForm webBrowser的NewWindow2中的StatusText

    我host一个 winForm的webBrowser时,在放大缩小窗口时网页会不停的闪烁,所以我在考虑wpf的webBrowser

    2013年1月8日 5:43