WPF中使用WebBrowser

來源:互聯網
上載者:User

標籤:exception   fun   outer   load   func   動態擷取   blog   name   exe   

最近在做北京現代項目的時候,遇到一個需求將韓國那邊寫好的網頁嵌套到WPF程式中顯示。

開始的時候使用的是第三方的瀏覽器控制項:awesomium,在本地測試,顯示沒有問題。但是拿到客戶現場,只顯示半屏。修改各種高度,還是會出現問題,用遠端桌面開啟,顯示正常,百思不得解。

換控制項使用微軟內建的瀏覽器控制項WebBrowser,升級IE還是會出現顯示半屏問題。

查看網頁源碼,頁面顯示高度是動態擷取的,以下是網頁中的JS源碼
    var wHeight, header1, header2;
    wHeight = $(window).height();
    header1 = $("div.board_header").outerHeight();
    header2 = $("div.table_header").outerHeight();
    $("div.table_scroll").css("max-height", (wHeight - header1 - header2 - 1 - 40)  + "px");

max-height 擷取的值是動態擷取的,所以會導致以上的問題。

解決問題思路:頁面載入完成,通過注入JS指令碼,修改max-height,來顯示完整網頁。

源碼如下:

        /// <summary>
        /// 瀏覽器載入完成事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ibbWeb_LoadCompleted(object sender, System.Windows.Navigation.NavigationEventArgs e)
        {
            try
            {
                dom = (mshtml.HTMLDocument)ibbWeb.Document; //定義HTML
                dom.documentElement.style.overflow = "hidden"; //隱藏瀏覽器的捲軸
                dom.body.setAttribute("scroll", "no"); //禁用瀏覽器的捲軸
                dom.parentWindow.execScript(@"window.onload = function(){ $(‘div.table_scroll‘).css(‘max-height‘, ‘910px‘); setTimeout(‘window.location.href=window.location.href‘,"+refreshPageInterval+") }"); //向頁面注入javascript語句
            }
            catch (Exception ex)
            {
                LogInfo.saveLog("載入瀏覽器控制項異常:" + ex);
                return;
            }
        }

WPF中使用WebBrowser

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.