Tôi sử dụng tính năng này mọi lúc khi phát triển trang web ... vì vậy tôi có thể thấy trong nháy mắt tab nào có cục bộ, dev hoặc prod chạy trong đó.
Giờ đây, Chrome hỗ trợ favicons SVG, điều đó làm cho nó dễ dàng hơn rất nhiều.
Tập lệnh Tampermonkey
Có một người thích ở https://gist.github.com/elliz/bb7661d8ed1535c93d03afcd0609360f cho một kịch bản tampermonkey trỏ đến một trang web demo mà tôi đã tặc lưỡi https://elliz.github.io/svg-favicon/
Mã cơ bản
Điều chỉnh từ câu trả lời khác ... có thể được cải thiện nhưng đủ tốt cho nhu cầu của tôi.
(function() {
'use strict';
// play with https://codepen.io/elliz/full/ygvgay for getting it right
// viewBox is required but does not need to be 16x16
const svg = `
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<circle cx="8" cy="8" r="7.2" fill="gold" stroke="#000" stroke-width="1" />
<circle cx="8" cy="8" r="3.1" fill="#fff" stroke="#000" stroke-width="1" />
</svg>
`;
var favicon_link_html = document.createElement('link');
favicon_link_html.rel = 'icon';
favicon_link_html.href = svgToDataUri(svg);
favicon_link_html.type = 'image/svg+xml';
try {
let favicons = document.querySelectorAll('link[rel~="icon"]');
favicons.forEach(function(favicon) {
favicon.parentNode.removeChild(favicon);
});
const head = document.getElementsByTagName('head')[0];
head.insertBefore( favicon_link_html, head.firstChild );
}
catch(e) { }
// functions -------------------------------
function escapeRegExp(str) {
return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
}
function replaceAll(str, find, replace) {
return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
}
function svgToDataUri(svg) {
// these may not all be needed - used to be for uri-encoded svg in old browsers
var encoded = svg.replace(/\s+/g, " ")
encoded = replaceAll(encoded, "%", "%25");
encoded = replaceAll(encoded, "> <", "><"); // normalise spaces elements
encoded = replaceAll(encoded, "; }", ";}"); // normalise spaces css
encoded = replaceAll(encoded, "<", "%3c");
encoded = replaceAll(encoded, ">", "%3e");
encoded = replaceAll(encoded, "\"", "'"); // normalise quotes ... possible issues with quotes in <text>
encoded = replaceAll(encoded, "#", "%23"); // needed for ie and firefox
encoded = replaceAll(encoded, "{", "%7b");
encoded = replaceAll(encoded, "}", "%7d");
encoded = replaceAll(encoded, "|", "%7c");
encoded = replaceAll(encoded, "^", "%5e");
encoded = replaceAll(encoded, "`", "%60");
encoded = replaceAll(encoded, "@", "%40");
var dataUri = 'data:image/svg+xml;charset=UTF-8,' + encoded.trim();
return dataUri;
}
})();
Chỉ cần bật SVG của riêng bạn (có thể được làm sạch bằng SVGOMG của Jake Archibald nếu bạn đang sử dụng một công cụ) vào const ở trên cùng. Hãy chắc chắn rằng nó là hình vuông (sử dụng thuộc tính viewBox) và bạn sẽ ổn.