【问题标题】:c# webbrowser control, navigates on dynamic menu hover?c# webbrowser 控件,导航动态菜单悬停?
【发布时间】:2010-07-02 13:07:12
【问题描述】:

我的 winforms 应用程序中有一个用作内置浏览器的表单。它使用 .net 网络浏览器控件。很简单。我有一个文本框作为地址栏,以及用于控制的按钮。当我导航到我的网站时,我的网站使用 .net 菜单控件来呈现悬停菜单。当我将鼠标悬停在菜单上时(使用我的浏览器表单),地址栏意外更改为:http://domainname/WebResource.axd?etc/etc/etc

我正在捕获 webbrowser_navigating 事件并将地址栏的 Text 属性设置为 e.Url.ToString()

当然,这不是预期的结果,IE 也不会这样做。 我错过了什么?

更新:

这是我能想到的唯一方法:

字符串 url = e.Url.ToString().ToLower(); // 只在特定情况下改变地址栏 // 过滤掉一些导航变化 if ((StringUtil.Empty(e.TargetFrameName) || e.TargetFrameName.ToLower() == "_blank") && !url.Contains("webresource.axd") && !url.Contains("javascript:") && !url.Contains("about:blank")) { toolStripAddress.Text = e.Url.ToString(); }

【问题讨论】:

  • 在页面中弹出菜单的(javascript?)代码是什么?
  • 一些代码会让事情更清晰。
  • 不知道,没写 :-) 它使用的是 .NET 3.1SP1 中内置的标准 .NET 菜单控件。
  • 页面中弹出菜单的.net或js代码明显触发了这个Navigating事件。也许它正在更改页面上的文本并调用“DocumentText”方法。您可能需要检查 WebBrowserNavigatingEventArgs.TargetFrameName 或 Url 属性以将其过滤掉。
  • 是的,我已经检查了 e.TargetFrameName 属性,它是空白的。但是,除了检查 Url 属性并手动过滤掉 WebResource 更改之外,没有比这更简单的方法了吗? IE。如果它在我的网站上这样做,当用户浏览到另一个使用 ajax 类型技术但不在 .NET 平台上的网站时,它会怎么做?

标签: c# browser webbrowser-control webresource.axd


【解决方案1】:

请参阅上面 Sanjay 的评论。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 2013-04-09
    • 1970-01-01
    • 2015-07-22
    • 2013-06-05
    • 2019-11-27
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    相关资源
    最近更新 更多