从 WebBrowser 控件中加载的文档获取标题
我有一个文本块和一个网络浏览器控件。我遇到问题,例如,我的网络浏览器导航到 google.com。当网络浏览器导航到 google.com 时,我希望文本块将标题更改为 google.com。
请帮助我使用 C# 实现这一点。
I have a textblock and a webbrowser control. I have a problem, for example, my webbrowser navigates to google.com. I want the textblock to change the title to google.com when webbrowser has navigated to google.com.
Please help me achieve this using c#.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用 IE
XAML 进行测试:
代码:
没有
dynamic
并且几乎没有任何异常处理:Tested with IE
XAML:
Code:
Without
dynamic
and hardly any exception handling:您可以从webBrowser的
Text
属性中提取标题标签,只需订阅LoadCompleted
事件You can extract title tag from webBrowser's
Text
property, just subscribe toLoadCompleted
eventDocument.Title 属性存在问题,就像在 javascript 中设置或更改标题一样,设置后您将无法获得最新值。
我们没有使用 WPF 中的默认 Web 浏览器,而是使用 FormsHost,并且使用 Windows 窗体的 Web 浏览器,它支持 DocumentTitle 属性和 DocumentTitleChanged 事件。
因此,我建议使用以下控件,您可以使用表单版本中提供的更多功能。如果您仔细观察,两者的功能在性能方面完全相同,因为两者都创建 win32 控件并与其交互。
它可能需要更多的代码来实现一些额外的功能,但通过添加更多的依赖属性和控制逻辑,一切皆有可能。
There is problem with Document.Title property, as if title has been set or changed as in javascript, you will not get the latest value once set.
Instead of using default Web Browser in WPF, we are using FormsHost and we use Windows Form's Web Browser which supports property as DocumentTitle and an event of DocumentTitleChanged.
So I will suggest using following control and you can use more functionality available in forms version. If you notice carefully, both function exactly same performance wise as both create a win32 control and interact with it.
It might need some more code to implement little extra but everything is possible by adding more dependency properties and controlling the logic.
这个可以用
This one will work
对于 .NET 4.5,Erno de Weerd 上面的答案只有一些拼写错误修复
*) 属性名称是 IHTMLDocument2_nameProp
*) 修复 if 块中的拼写错误
Just little typo fixups for answer above Erno de Weerd, for .NET 4.5
*) property name is IHTMLDocument2_nameProp
*) fix in typo in if block