iT邦幫忙

2025 iThome 鐵人賽

DAY 7
0
Modern Web

在Vibe Coding 時代一起來做沒有AI感的漂亮網站吧!系列 第 7

不同瀏覽器要區別對待——一個hook解決跨瀏覽器調整問題(就是在說你Safari 體系!)

  • 分享至 

  • xImage
  •  

嗨咿,我是 illumi,前天講到用png sequence 可以解決 Safari 不支援 WebM 的問題,那怎麼讓不同瀏覽器用上不同元件呢!

Step.1 新增一個 Hook (同樣用React示範):

把Safari體系的都篩選出來

import { useEffect, useState } from "react";

export function useIsSafariOrIOS() {
  const [isSafariOrIOS, setIsSafariOrIOS] = useState(false);

  useEffect(() => {
    const ua = navigator.userAgent.toLowerCase();

    const isIOS = /iphone|ipad|ipod/.test(ua);
    const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);

    setIsSafariOrIOS(isIOS || isSafari);
  }, []);

  return isSafariOrIOS;

Step.2 引用 Hook :

import { SequencePlayer } from "@/components/SequencePlayer";
import { useIsWebmSupported } from "@/hooks/useIsWebmSupported";

export default function MonsterAnimation() {
  const isSafariOrIOS = useIsWebmSupported();

  return (
    <>
      {isSafariOrIOS ? (
        //  Safari / iOS → pngSequence
        <SequencePlayer
          frameCount={60}
          width={100}
          height={100}
          fps={24}
        />
      ) : (
        //  其他 → webm
        <video
          autoPlay
          loop
          muted
          playsInline
        >
          <source
            src="影片.webm"
            type="video/webm"
          />
        </video>
      )}
    </>
  );
}

醬就可以一直重複利用啦~

我們明天見!


上一篇
一起戳戳網頁讓他發出可愛聲音吧
系列文
在Vibe Coding 時代一起來做沒有AI感的漂亮網站吧!7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言