2014-02-11 206 views
0

我正在嘗試獲取上傳的html文件的寬度和高度。這是我迄今爲止所做的。在虛擬瀏覽器中獲取頁面寬度和高度

WebBrowser wb = new WebBrowser(); 
int ht,wd; 
wb.Navigate("D:\\page1.HTM"); 
ht = wb.Height; 
wd = wb.Width; 

但上面的代碼總是返回頁面的大小錯誤。

任何人都可以幫助我在c#環境中獲得確切的頁面大小?

FYI:對於那些標明這個問題上複製,請考慮原來的問題(根據你的觀點),web瀏覽器工具的形式,但在我的情況下實現的,我不會執行它。我只是要使用它。我希望第一行代碼表示這一點。

+0

@pravprab,我需要的**實際像素**上傳的html文件的大小。根據你的鏈接,它說我們需要一個解析器。我使用虛擬webrowser控件來加載html文件以滿足我的要求。你是否找到其他方式來實現我的選擇? –

+0

**供參考:**我只需要實際大小的Internet Explorer。我不在乎其他瀏覽器。 –

+0

它是一個很好的選擇..但據我所知,我們無法在虛擬瀏覽器中實現JavaScript。 :(或者是否有其他方法? –

回答

1

您可以嘗試

public partial class Form1 : Form 
{ 
    WebBrowser wb = new WebBrowser(); 
    public Form1() 
    { 
     InitializeComponent(); 
     wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted); 
     wb.Navigate("D:\\page1.HTM"); 

    } 

    private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     int scrollWidth = wb.Document.Body.ScrollRectangle.Width; 
     int scrollHeight = wb.Document.Body.ScrollRectangle.Height; 
    } 
} 

這對我工作得很好..!

代碼

wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);

用來DocumentCompleted事件綁定到虛擬網頁瀏覽器Form1是一個winform並且沒有控制存在於該形式除外虛擬網頁瀏覽器,聲明爲WebBrowser wb = new WebBrowser();

DocumentCompleted事件文檔(這裏page1.HTM)完全加載後觸發。

Reference

+0

其實,你理解的方式完全相反,我在一個位置有一個html文件,如果我從ac#應用程序中引用,應用程序必須返回html的實際寬度和高度頁面(根據Internet Explorer) 因此,我不能在文件中使用ajax組件 –

+0

我不允許重寫html文件...儘管它被觸發了,我怎麼能在c# ...從javascript到c#? –

+0

不錯,如果是一個文件,我可以重寫這個文件。但是,考慮一下這個操作需要做一組10000文件,那樣你的建議就失敗了。 –

相關問題