50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
document.addEventListener('DOMContentLoaded', () => {
|
|
// Find the existing favicon link or create one
|
|
let favicon = document.querySelector('link[rel="icon"]') || document.querySelector('link[rel="shortcut icon"]');
|
|
|
|
if (!favicon) {
|
|
console.warn('No favicon link found to animate.');
|
|
return;
|
|
}
|
|
|
|
const image = new Image();
|
|
image.crossOrigin = "anonymous";
|
|
image.src = favicon.href;
|
|
|
|
image.onload = () => {
|
|
const canvas = document.createElement('canvas');
|
|
const size = 32; // Standard favicon size
|
|
canvas.width = size;
|
|
canvas.height = size;
|
|
const ctx = canvas.getContext('2d');
|
|
|
|
let angle = 0;
|
|
|
|
// Animation loop
|
|
setInterval(() => {
|
|
// Clear canvas
|
|
ctx.clearRect(0, 0, size, size);
|
|
|
|
// Save context
|
|
ctx.save();
|
|
|
|
// Move to center, rotate, move back
|
|
ctx.translate(size / 2, size / 2);
|
|
ctx.rotate(angle * Math.PI / 180);
|
|
ctx.translate(-size / 2, -size / 2);
|
|
|
|
// Draw image
|
|
ctx.drawImage(image, 0, 0, size, size);
|
|
|
|
// Restore context
|
|
ctx.restore();
|
|
|
|
// Update favicon
|
|
favicon.href = canvas.toDataURL('image/png');
|
|
|
|
// Increment angle
|
|
angle = (angle + 10) % 360;
|
|
}, 100); // 100ms = 10fps
|
|
};
|
|
});
|