嗨咿,我是 illumi,前天講到用png sequence 可以解決 Safari 不支援 WebM 的問題,那怎麼讓不同瀏覽器用上不同元件呢!
把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;
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>
      )}
    </>
  );
}
醬就可以一直重複利用啦~
我們明天見!