且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在Windows Phone 7中自动调整WebBrowser控件高度?

更新时间:2023-12-06 12:33:34

您需要使用JavaScript来获取呈现的html的高度并设置它给你的WebBrowser控件。

以下是这个


I have created a WebBrowser control in the xaml, and bind some html via string to it. It's working fine . But the WebBrowser will never auto adjust its height.

<phone:WebBrowser
    HorizontalAlignment="Stretch" 
    Margin="0,6,0,0" Name="myWebView" 
    VerticalAlignment="Top" />

private void WebBrowser_OnLoaded(object sender, RoutedEventArgs e)
{
    String htmlTags = "<html><head><meta charset='UTF-8'/><meta name=\"viewport\" content=\"width='480', initial-scale='1'\"></head><body><center>{0}</center></body></html>";
    myWebView.NavigateToString(String.Format(htmlTags, getHTMLContent());
}

public string getHTMLContent()
{
    StringBuilder htmlBody = new StringBuilder();
    htmlBody.Append("<table cellpadding=\"0\" cellspacing=\"0\" width=\"704\" height=\"484\" background=\"https://known.com/img/back/123456.jpg\" style=\"background-repeat: no-repeat; background-position: center;\">");
    htmlBody.Append("<tr>");
    htmlBody.Append("<td valign=top>");
    htmlBody.Append("<div style=\"position: absolute;\">");
    htmlBody.Append("<div style=\"position: absolute; display: table; width: 132px; height: 132px; top: 44px; left: 44px; z-index:0;\">");
    htmlBody.Append("<img src=\"https://known.com/img/icon/87654.jpg\" width=\"100%\" height=\"100%\"/>");
    htmlBody.Append("</div>");
    htmlBody.Append("<div style=\"position: absolute; display: table; width: 704px; height: 484px; top: 0px; left: 0px; z-index:0; \">");
    htmlBody.Append("<img src=\"https://known.com/img/icon/234255.jpg\" width=\"100%\" height=\"100%\"/>");
    htmlBody.Append("</div>");
    htmlBody.Append("<div style=\"position: absolute; display: table; width: 440px; height: 264px; top: 184px; left: 184px; z-index:0;  font-family:times;  font-size:14px;  color:#FFFFFF; \" align=\"center\">");
    htmlBody.Append("<div style=\"display: table-cell;vertical-align: middle;\">");
    htmlBody.Append("</div>");
    htmlBody.Append("</div>");
    htmlBody.Append("</div>");
    htmlBody.Append("</td>");
    htmlBody.Append("</tr>");
    htmlBody.Append("</table>");
    return htmlBody.ToString();
}

What I want the WebBrowser to be

1) Auto adjust its height depends on the HTML String. If i pass only one image mean, it should auto adjust depends on the image. It there is no content mean, browser should hide itself.

2) Should not scrollable, because the WebBrowser already stretch its height to fit the content.

How can I make it? Please let me any idea to resolve my problem.

You need to use javascript to get the height of the rendered html and set it to your WebBrowser control.

Here is an implementation of this.