使用 WebBrowser 控件时如何获取网站图标?
我的应用程序中嵌入了一个 Windows 窗体 WebBrowser 控件。有没有办法使用 WebBrowser 或 HtmlDocument API 获取网页图标?甚至从本地文件系统获取它就足够了。下载图标作为单独的操作将是最后的手段......
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
只需使用 GET 或类似的方式下载 /favicon.ico 文件(就像下载任何其他文件一样)。
您还可以解析页面以查找可能也是 png 的图标。默认情况下它是一个 ICO 文件。
favicon文件的位置通常在
节点中的
页面。
此外,某些浏览器默认会尝试下载 /favicon.ico(即网站根文件夹中的 favicon.ico 文件)而不检查该页面元素。
其他想法是使用 Google 的 S2:
http://www.google.com/s2/favicons?domain=youtube.com
(尝试一下)这将为您提供 YouTube ICO 图标的 16x16 PNG 图像。
http://www.google.com/s2/favicons?domain=stackoverflow.com
(尝试一下)这将为您提供相同格式的 stackoverflow 图标。
它可能看起来很棒,但请不要忘记,此 Google 服务并未得到官方支持,他们可能随时将其删除。
Just download the /favicon.ico file using a GET or something similar (like you would for any other file).
You can also parse the page to find the favicon that might be also a png. By default it's an ICO file.
The location of favicon file is usually in
<link rel="shortcut icon" href="/favicon.ico" />
in the<head>
node of the page.Also, some browsers by default try to download /favicon.ico (that is, the favicon.ico file in the root folder of the website) without checking the page for that element.
Other idea would be using Google's S2:
http://www.google.com/s2/favicons?domain=youtube.com
(Try it)This will get you a 16x16 PNG image of youtube's ICO favicon.
http://www.google.com/s2/favicons?domain=stackoverflow.com
(Try it)This will get you the stackoverflow favicon in the same format.
It might seem awesome but don't forget, this Google service is not officially supported and they might remove it at anytime.
而且网络浏览器控件没有地址栏,因此它没有用于地址栏功能(如网站图标)的应用程序编程接口。
And the webbrowser control doesn't have an address bar, so it does not have application programming interface for address bar features like favicon.
favicon
是一个单独的文件。它不是页面 HTML 的一部分。您需要在单独的调用中获取它。
The
favicon
is a separate file. It is not part of the page HTML.You will need to fetch it in a separate call.
我也需要这样做,所以我写了这篇文章。请注意,我使用的是本机 WebBrowser COM 控件而不是 .Net Wrapper,因此如果您使用 .Net Wrapper,则需要进行一些细微的调整。
I too was needing to do this, so I wrote this. Note that I'm using the native WebBrowser COM control instead of the .Net Wrapper, so if you're using the .Net Wrapper, some minor adjustments will need to be made.