我有一个 WPF WebBrowser 控件,在 wpf 客户端应用程序中使用它来导航到不同的页面。它具有基本功能,例如 back 、forward 、 go 事件,这些事件调用 this.webbrowser.goback()、this.webbrowser.goforward()、this.webbrowser.go()。
虽然 Web 应用程序在 IE 上工作得很好,这意味着所有向前和向后导航都超过一级。在我的 WPF 应用程序的一页中,超过一级导航不能正常工作(比林斯,它有联系人链接,在联系人页面中,我们有地址链接。)当单击我的地址页面上的后退按钮时,它会转到联系人页面,但单击联系人页面上的后退按钮不会转到帐单页面。
由于它在 IE 中工作正常,没有任何问题,我怀疑我的 WPF 应用程序有问题。我在这里有几个问题。
- webbrowser.goback() 和 IE 的点击后退按钮一样吗?或者与 IE 相比,wpf webbrowser 控件中会错过任何事件吗?
- 有没有一种方法可以从 WPF 应用程序本身调试 javasctipts?
- 有没有更好的方法从 WPF 应用程序调试此类场景?
- IE 是否将 WPF WebBrowser 导航存储在其历史记录中,或者它是一个单独的实例?
我的控件如下所示
<WebBrowser x:Name="webBrowser" DockPanel.Dock="Bottom" Navigating="webBrowser_Navigating" Navigated="webBrowser_Navigated" LoadCompleted="webBrowser_LoadCompleted"/>
后面的代码如下所示:
private void backButton_Click(object sender, RoutedEventArgs e)
{
// Navigate to the previous HTML document, if there is one
if (this.webBrowser.CanGoBack)
{
this.webBrowser.GoBack();
}
else
{
MessageBox.Show("Cannot go back. There needs to be something in the history to go back to.");
}
}
private void forwardButton_Click(object sender, RoutedEventArgs e)
{
// Navigate to the next HTML document, if there is one
if (this.webBrowser.CanGoForward)
{
this.webBrowser.GoForward();
}
else
{
MessageBox.Show("Cannot go Forward. There needs to be something in the history to go forward to.");
}
}
我本来期望 WebBrowser 控件的导航方式与它实质上托管在 WPF 中的 IE 相同。
您可以在 .NET 应用程序中使用 JavaScript 调用方法,因此可以让 JavaScript 将调试信息写入到 .NET 控制台
该类可以传递给 WebBrowser 中的 JavaScript 来调用 .NET 方法:
[ComVisible(true)]
public class ScriptManager
{
// This method can be called from JavaScript.
public void WriteConsole(string output)
{
// Call a method on the form.
Console.WriteLine(output);
}
}
传递到网络浏览器:
webBrowser1.ObjectForScripting = new ScriptManager();
我不知道调用该方法的 JavaScript 位,因为我从未真正使用过 JavaScript,但我认为它会是这样的:
$scope.LogBackNavigation = function() {
window.external.WriteConsole("Back Navigation");
}
这可能会让您看到 JavaScript 中发生了什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)