2010-09-29 66 views
4

除非我完全失明,否则appear to be no在Windows Phone 7的WebBrowser类中实现的方法可以在浏览器中向后和向前浏览页面,也不会刷新现有网页?使用Windows Phone 7中的WebBrowser类导航,前进和刷新

我对这个假设是否正确?这可以通过另一种方式实现吗?

我曾尝试使用“javascript:history.go(-1)”作为URI并要求WebBrowser对象导航到它,但那没有做任何事情。

回答

1

说得对,WebBrowser没有后退/前进/刷新方法。您需要将InvokeScript转换为JavaScript并从那里执行。 InvokeScript最适合您在页面上定义的预定义JavaScript函数。有时你可以这样做:webBrowser.InvokeScript(“eval”,“history.go(-1)”)。但是,这并不总能保证工作,因为如果页面没有标签或者eval已被其他脚本覆盖,eval将不起作用。

0

它有父类的Navigate方法,那些没有做你所需要的?否则,你可以使用NavigationService做回导航?

或者你只是试图浏览器从浏览器内部的JavaScript浏览器?

+0

我创建我的应用程序内的Web浏览器视图,而不是backgrounding应用程序和使用Internet Explorer这样一些应用任务可以继续运行,而用户是在浏览器视图。我无法在此视图上实现“后退”和“前进”按钮来控制嵌入式WebBrowser对象中的用户导航。导航诸如.GoBack()等方法不起作用。 – andybee 2010-09-30 13:32:22

+0

啊,因为那些会将你的页面从堆栈中导出,而不是浏览器...有趣。 – 2010-09-30 16:23:18

+0

确实。这似乎是一个非常不寻常的疏忽。 – andybee 2010-09-30 21:21:36

1

通过观看NavigatedNavigating事件并管理自己的后退/前进堆栈,回退/转发几乎可以实现,但不幸的是,如果您点击重定向,则不会显示任何事件数据。

虽然刷新很简单,但只需存储实例变量中访问的最后一个URL并调用WebBrowser.Navigate(lastUrl)即可。我建议在Navigating开始处禁用按钮(或将其改为“停止”),并在Navigated末尾重新启用

-2

OnNavigatedTo是解决方案,您必须重写它,以便每次页面得到“导航“它激起了事件。