简单问题:我创建了一个小应用程序,它基本上只是我系统托盘中的收藏夹,以便我可以从同一个地方打开常用的站点/文件夹/文件.从我的系统获取已知文件类型的默认图标并不是非常复杂,但我不知道如何从网站获取favicon.(例如,SO在地址栏中有灰色 - >橙色堆栈图标)
有谁知道我会怎么做?
是否可以使用Font Awesome图标作为favicon图标?你知道,浏览器标签中出现在网站标题旁边的小图标吗?
题
方法1
放置favicon.ico在主目录中命名的文件是一种方法.浏览器始终请求该文件.您可以在apache日志文件中看到它.
方法2
部分中的HTML标记<head>:
<link rel="shortcut icon" href="/images/favicon.png (or ico?)" type="image/x-icon" />
Run Code Online (Sandbox Code Playgroud) 我用了创建了一个vue webpack项目vue-cli.
vue init webpack myproject
Run Code Online (Sandbox Code Playgroud)
然后在dev模式下运行项目:
npm run dev
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
无法加载资源:服务器响应状态为404(未找到)http:// localhost:8080/favicon.ico
所以在webpack里面,如何favicon.ico正确导入?
目前在所有目前支持它的浏览器中显示favicon的最佳方法是什么?
请包括:
哪些浏览器支持哪些图像格式.
在各种浏览器的哪些位置需要哪些行.
从2019年开始,应该使用哪些favicon尺寸,文件格式和元/链接标签?这包括苹果图标,Windows,Android和人们今天使用的其他设备.
我使用Opera,我可以看到它支持svg格式.这是现在使用svg的最佳解决方案吗?有没有选项"一个文件适合所有"?
我一直在浏览许多网站并检查了不同的"favicon生成器".所有这些都是岁,并且主要使用png文件.
示例: 应该使用哪些代码ico和svg?
<link rel="icon" href="favicon.ico" type="image/ico">
<link rel="icon" href="favicon.svg" type="image/svg+xml">
Run Code Online (Sandbox Code Playgroud)
或者如果ico包含更多尺寸,是否应指定尺寸?我找不到一个好的答案.
<link rel="icon" sizes="16x16 24x24 32x32 48x48 64x64" href="favicon.ico">
Run Code Online (Sandbox Code Playgroud)
请提供应使用哪些favicons的维度,文件格式和元/链接标记.
如何覆盖Spring Boot的图标?
注意:这是我的另一个问题,它提供了另一个不涉及任何编码的解决方案:Spring Boot:是否可以在胖jar的任意目录中使用外部application.properties文件?它适用于application.properties,但也可以应用于favicon.事实上,我现在正在使用该方法进行favicon覆盖.
如果我实现了一个具有@EnableWebMvc的类,则不会加载Spring Boot的WebMvcAutoConfiguration类,并且我可以通过将其放置到静态内容的根目录来提供我自己的favicon.
否则,WebMvcAutoConfiguration会注册faviconRequestHandler bean,(参见源代码https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ web/WebMvcAutoConfiguration.java)它提供了"绿叶"图标,该图标位于Spring Boot的主资源目录中.
如何在不实现自己拥有@EnableWebMvc的类的情况下覆盖它,从而禁用Spring Boot的WebMvcAutoConfiguration类的整个默认配置功能?
此外,由于我希望在客户端(Web浏览器)端尽快更新图标文件,我想将favicon文件的缓存周期设置为0.(如下面的代码,我用于我的'static'webapp内容和脚本文件,我必须在更改文件后尽快在客户端更新.)
public void addResourceHandlers(ResourceHandlerRegistry registry)
{
registry.addResourceHandler("/**")
.addResourceLocations("/")
.setCachePeriod(0);
}
Run Code Online (Sandbox Code Playgroud)
因此,只是找到保存favicon.ico文件的地方,Spring Boot的faviconRequestHandler荣誉可能还不够.
UPDATE
现在我知道我可以通过将一个favicon文件放到src/main/resources目录来覆盖默认值.但缓存期问题仍然存在.
此外,最好将favicon文件放在放置静态Web文件的目录中,而不是放在资源目录中.
UPDATE
好的,我设法覆盖了默认的一个.我做的是如下:
@Configuration
public class WebMvcConfiguration
{
@Bean
public WebMvcConfigurerAdapter faviconWebMvcConfiguration()
{
return new FaviconWebMvcConfiguration();
}
public class FaviconWebMvcConfiguration extends WebMvcConfigurerAdapter
{
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry)
{
registry.setOrder(Integer.MIN_VALUE);
registry.addResourceHandler("/favicon.ico")
.addResourceLocations("/")
.setCachePeriod(0);
}
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,我通过调用registry.setOrder(Integer.MIN_VALUE)来添加具有最高顺序的资源处理程序来覆盖默认值.
由于Spring Boot中的默认值具有订单值(Integer.MIN_VALUE + 1),(请参阅https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/中的 FaviconConfiguration类src/main/java/org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration.java)我的处理程序获胜.
这个可以吗?还有另一种方式(比我做的更温和)?
UPDATE
这不好.当我打电话时registry.setOrder(Integer.MIN_VALUE) …
favicon ×10
html ×7
.net-4.0 ×1
c# ×1
ecmascript-6 ×1
font-awesome ×1
html5 ×1
png ×1
spring-boot ×1
spring-mvc ×1
standards ×1
svg ×1
vue.js ×1
webpack ×1