2

I am developing a windows phone application. In a page I placed a button and on this button click I open the webbrowser and redirects to our website pages for some processes. There are many webpages. In the last webpage we added a button "Close". In the close button click I want to close the webbrowser and open the application back with the last state before opening the webbrowser. How can I do this ?

Thanks.

4

2 回答 2

6

我将应用程序中的按钮称为“应用程序按钮”,将网页中的按钮称为“关闭按钮”。

将名为 webBrowser1 的 WebBrowser 控件添加到 Windows Phone 应用程序。使其覆盖整个屏幕,并将其 Visibility 属性设置为 Collapsed。

在应用程序按钮的点击事件中,使用

webBrowser1.Visibility = System.Windows.Visibility.Visible;
webBrowser1.Navigate(new Uri("http://yourwebsite.com/page");

显示网络浏览器并将其导航到您网站的第一页。

使站点最后一页上的关闭按钮导航到站点上的新页面,称为“close.html”或您想要的任何内容。在 javascript 中,这看起来像

<Button onclick="window.location.href='http://yourwebsite.com/close.html';">

回到应用程序:在 webBrowser1 的导航事件使用中,

if (e.Uri.ToString().Contains("close.html"))
{
    webBrowser1.Visibility = System.Windows.Visibility.Collapsed;
}

当您单击站点最后一页上的按钮时,它会导航到“close.html”。发生这种情况时,Web 浏览器的 Navigating 事件将触发。由于每次更改页面时都会触发此事件,因此您需要检查新 url 是否包含“close.html”,即关闭按钮导航到的页面。如果是这样,Web 浏览器将被隐藏,您将再次看到您的应用程序。

.

(在 VB 中,代码为)

webBrowser1.Visibility = System.Windows.Visibility.Visible
webBrowser1.Navigate(New Uri("http://yourwebsite.com/page")

If e.Uri.ToString.Contains("close.html")
    webBrowser1.Visibility = System.Windows.Visibility.Collapsed
End If
于 2012-09-08T23:14:05.310 回答
1

编辑:当我写答案时,我是在笼统地思考,不记得你是在专门询问网络浏览器(因此,使用webbrowsertask启动器)。感谢@Claus 指出 OAuth 的情况。因此,我正在修改我的答案以解释这是可能的,并且还提到了使用启动器的问题,因为无法保证返回到启动器应用程序中的给定点(因为它与选择器一样,因为它的可用性回调)。

一般而言,这是不可能实现的。也就是说,有一个应用程序 A 打开了另一个应用程序 B,并且您想从应用程序 B 中关闭并打开 A。我认为这是不可能的原因有很多: - 如何获得应用程序 A 的地址/引用。目前没有 API。- 没有内容处理程序/插件,第 3 方可以使用 Web 浏览器注册应用程序。- 最重要的是,安全,安全,安全。这将为来自网络的攻击打开大门。

但是,对于应用程序 B 作为网络浏览器的要求,可以使用任务启动器WebBrowserTask。正如@claus 建议的那样,您可以Window.close()在最后一页中使用 javascript 来关闭浏览器,从而显示其下方的应用程序(希望是 A)。这里的问题是,如果用户在浏览器启动之后(并且在浏览器关闭之前)打开了一个应用程序(我们称之为 C),并且用户没有关闭 C,那么当浏览器关闭时,用户将被返回到 C 而不是启动器应用程序!根据您的要求,这不是您想要的。

因此,如果您想实现您在问题中描述的那种效果,最好将 Web 浏览器嵌入到您的应用程序(作为全屏应用程序)中,并且从这个有利位置您可以在网络浏览器(控制)和(主机)应用程序通过 Javascript。

希望这会有所帮助。

于 2012-09-08T06:20:57.380 回答