我有一个WPF WebBrowser控件,我在我的wpf客户端应用程序中使用它来导航到不同的页面。它有基本的功能,如back,forward,go事件,调用this.webbrowser.goback(),this.webbrowser.goforward(),this.webbrowser.go()。
虽然Web应用程序可以正常使用IE,这意味着所有前进和后退导航都超过一个级别。多个级别的导航在我的WPF应用程序中不能正常工作一页(Billings有联系人链接在联系人页面中我们有地址链接。)点击我的地址页面上的后退按钮进入联系人页面,但点击联系人页面上的后退按钮不会进入结算页面。
由于IE在没有任何问题的情况下正常工作,我怀疑我的WPF应用程序出了问题。我这里的问题很少。
我的控件如下所示
<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.");
}
}
答案 0 :(得分:3)
我原本希望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);
}
}
传递给WebBrowser:
webBrowser1.ObjectForScripting = new ScriptManager();
我不知道调用该方法的JavaScript位,因为我从未真正使用过JavaScript,但我认为它会是这样的:
$scope.LogBackNavigation = function() {
window.external.WriteConsole("Back Navigation");
}
这可能会让您看到JavaScript中发生了什么。
答案 1 :(得分:2)
调试-Attach to Process - &gt;脚本代码 这已经加载了我的VS中的所有JS文件,我可以在任何地方放置断点。