通常情况下,做网站的都会给自己的网站添加一个Icon,浏览器上一长排的标签页,用Icon来区分就显得更加醒目。现在想找一个没有Icon的网站并不好找,可见没有Icon的网站是多么的业余啊。"什么?你问Icon是什么?你走吧,这是讨论技术的地方!"
想知道如何获取Icon,就要弄明白怎样设置Icon。先讨论一下设置Icon,再介绍获取Icon,并提供相应Java代码以供参考。
一. 设置网站Icon
设置Icon有两种方式:
1. 看一下我们专业的博客园,看到灰色部分了吗,在head标签中有个link标签,将rel设置为"shortcut icon",href 设置为Icon的位置,type设置成实际图标类型就OK了。这个Icon文件不是必须以favicon.ico命名,也可以选择png等其他格式的图片。
2. 如果用第一种方式,每个页面都要写link,是不是挺麻烦的,可能会用模板之类的东西自动生成,这个我不懂啦。如果浏览器发现html中没有写明Icon位置,就自动到网站根目录下尝试读取favicon.ico文件。再看一下我们专业的博客园,看到了吗,Icon显示出来了。注意:根目录下的文件就必须以favicon.ico命名了。考虑到浏览器兼容性,大部分的网站除了在html中指定Icon的位置,同时也会在网站根目录下存放Icon文件。
二. 获取网站Icon
知道怎么设置Icon,获取Icon就很简单了。解析html相对来说比较麻烦,可以直接到网站根目录下尝试读取favicon.ico。如果没有,再解析html(话说我试了很多常用网站,都可以从根目录下读取,想找个根目录下不存放Icon的网站还真不容易,这时我想到了12306,试了一下果然没有啊,事情并没有想象的那么简单,12306会奇葩到你想不到,后边再说)。思路就是这样,很简单,但是在实现的过程中会有很多细节问题。
1.域名 +favicon.ico 通常能满足
2.域名 +目录 +favicon.ico 大部分也能满足
3.通过api获取
4.实在没有返回一个默认的
给大家分享api
http://tool.bitefu.net/ico/?url=https://www.baidu.com
http://tool.bitefu.net/ico/?url=https://www.baidu.com&type=1 [直接返回base64编码的图片信息]
源码下载:http://www.90pan.com/b1458386
再分享给大家几个api 都非常好用.
http://api.byi.pw/favicon/?url=
http://cdn.website.h.qhimg.com/index.php?domain=
或者把代码中放入公用 js 文档中调用:
jQuery(document).ready(function($){
$("#link-home li a").each(function(e){
$(this).prepend("");
});
});
个网站都应该有一个favicon图片,就是显示在浏览器标题栏上面的小图标,当打开网页或将网页加入收藏时都会显示这个图标。
而对于WEB设计或站长来说,可能会希望把某个网站的图标加入到站点名字或链接的前面以为页面增添色彩,同时增加链接的可读性和易用性。
这个接口便是为此功能而生的。通过一种简单、稳定的方式获取网站的Favicon图标。
优点/特性
- 调用方便,直接URL参数调用,几乎支持所有URL格式,并且同时支持HTTP/HTTPS协议
- 服务器端使用Redis缓存,针对已访问过的图标加载速度更快,无需等待
- 支持以 HTTPS 方式调用本接口,应用在 HTTPS 网站不会有障碍
- 包含301重定向的网址可以自动跳转到重定向后的地址并获取图标文件
- 针对国外访问速度较慢的网站及被墙网站做优化,加载更快并永久避免被墙
本接口目前仍有很多需要改善的地方,而且被墙网站的列表也需持续更新, 如果您在使用中有任何的意见/建议甚至图标获取失败了都可以在此留言或邮件联系。
使用方法
直接使用URL参数的形式调用即可。
https://{domain}/?url={url}&expire=3600
例如
https://api.byi.pw/favicon/?url=blog.icewingcc.com
参数列表
参数 | 描述 |
---|---|
{domain} |
目前可用的域名有:
注意:favicon.byi.pw暂不支持 HTTPS 方式调用 |
{url} required |
需要获取Favicon图标的网站网址,可以为任意能访问的网址。 目前仅支持 HTTP/HTTPS 协议的网址,协议可省略。 |