在使用WP7的Web浏览器控件时隐藏网页中的元素

时间:2012-07-25 02:59:58

标签: c# windows-phone-7 xaml browser

我目前正在为我的大学开发WP7应用程序,需要临时解决问题。现在这个解决方案是,我将使用WP7的Web浏览器控件加载网页。例如:http://m.iastate.edu/laundry/

现在,正如您在网页上看到的那样,我想要隐藏某些元素,例如后退按钮。现在,我所做的处理后退按钮是这样的:

private void webBrowser1_Navigating(object sender, NavigatingEventArgs e)
{
    // Handle loading animations

    // Handle what happens when the "back" button is pressed
    Uri home = new Uri("http://m.iastate.edu/");

    // The the current loading address is home
    // Cancel the navigation, and go back to the 
    // apps home page.
    if (e.Uri.Equals(home))
    {
        e.Cancel = true;
        NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
    }

}

现在它的效果非常好,除了硬件上有后退按钮的部分。

所以我的第二个选择是完全隐藏该页面上的后退按钮 ONLY ,而不是其子项。 http://m.iastate.edu/laundry/l/0

上的

我仍然在讨论解析数据并以我自己的风格显示它,但我不确定是否完全需要了解数据如何需要不断的互联网服务并且已经采用了良好的格式。另外,我觉得这会浪费资源?对此也提出意见:)

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该在页面中使用InvokeScript注入脚本。

以下是删除后退按钮所需的Javascript代码:

// get the first child element of the header
var backButton = document.getElementsByTagName("header")[0].firstChild;

// check if it looks like a back button
if(backButton && backButton.innerText == "Back") {
  // it looks like a back button, remove it
  document.getElementsByTagName("header")[0].removeChild[backButton];
}

使用InvokeScript调用此脚本:

webBrowser1.InvokeScript("eval", "(function() { "+ script +"}()");

警告:必须在网络控件上将IsScriptEnabled设置为true

如果删除后退按钮取决于页面,只需在C#中测试导航URI并在必要时注入脚本。