Search code examples
javascripthtmlcsssafarifavicon

Can't change favicon with javascript in safari


I have a page that changes the favicon through javascript. This works great on chrome and firefox, but on Safari it does not work. I even added the <link rel="apple-touch-icon" href="favicon-1.png"> part and changed that through javascript as well, but that also does not do the trick.

The page looks like this:

<html lang="en">
<head>
  <meta charset="utf-8">

  <title>Foo</title>
  <link rel="icon" type="image/png" href="favicon-1.png">
  <link rel="apple-touch-icon" href="favicon-1.png">

  <style>
  </style>
</head>
<body></body>
    <script>
        setTimeout(() => {
          var favicon = document.querySelector('link[rel="icon"]');
          var appleTouchIcon = document.querySelector('link[rel="apple-touch-icon"]');
          
          favicon.setAttribute('type', 'image/png');
          favicon.setAttribute('href', 'favicon-2.png');

          appleTouchIcon.setAttribute('href', 'favicon-2.png');
          }, 4000);
    </script>
</body>
</html>

Can anyone spot what I am doing wrong here?


Solution

  • It seems like it is not even possible as briefly mentioned in this webkit issue.

    Citing:

    ...Since we quite purposefully don't allow dynamic changes/animations to the favicon...