[JavaScript+SCSS] λΈŒλΌμš°μ € νƒ€μž… 확인, μ‚¬νŒŒλ¦¬μ—μ„œλ§Œ μ μš©λ˜λŠ” SCSS
728x90

λ“€μ–΄κ°€λ©°

μ§„ν–‰ν–ˆλ˜ λ―Έλ‹ˆ ν”„λ‘œμ νŠΈμΈ κ°€μœ„λ°”μœ„λ³΄ κ²Œμž„μ—μ„œ κ²Œμž„μ‹œμž‘ νŽ˜μ΄μ§€λ‘œ λ„˜μ–΄κ°€λ©΄ 3초 μΉ΄μš΄νŠΈκ°€ μ‹œμž‘λœλ‹€.
그런데 μ‚¬νŒŒλ¦¬ λΈŒλΌμš°μ €μ™€ iOS λ””λ°”μ΄μŠ€λ“€μ—μ„œλŠ” Audio.play ν•¨μˆ˜κ°€ λ™μž‘ν•˜μ§€ μ•ŠλŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλ‹€. 😱
크둬과 λΉ„μŠ·ν•˜κ²Œ λΈŒλΌμš°μ € 정책상 μ‚¬μš΄λ“œ μžλ™μž¬μƒμ΄ λ°”λ‘œ λ˜μ§€ μ•Šλ„λ‘ λ§‰ν˜€μžˆλŠ” 것!...

 

κ·Έλ ‡λ‹€λ©΄ μ²œμƒ μΈνŠΈλ‘œνŽ˜μ΄μ§€μ—μ„œ λ²„νŠΌμ„ λˆŒλ €μ„ λ•Œ λ°°κ²½μŒμ•…μ΄ λ‚˜μ˜€λ„λ‘ ν–ˆλ˜ κ²ƒμ²˜λŸΌ,
μ—¬κΈ°μ„œλ„ 무언가 λˆŒλ €μ„ λ•Œ κ²Œμž„μ΄ μ‹œμž‘λ  수 μžˆλ„λ‘ ν•΄μ•Όν•˜λŠ”λ°... (setTimout λ©”μ„œλ“œλ„ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜μ§€ μ•Šμ•˜λ‹€.)
μ‚¬μš©μ„± λΆ€λΆ„μ—μ„œλŠ” 쑰금 λ–¨μ–΄μ§ˆ 수 μžˆμ§€λ§Œ, iOS와 μ‚¬νŒŒλ¦¬ μ „μš©μœΌλ‘œ κ²Œμž„ μ‹œμž‘μ„ μ•Œλ¦¬λŠ” λ ˆμ΄μ–΄λ₯Ό κΉ”μ•„μ£ΌκΈ°λ‘œ ν–ˆλ‹€.

 

그럼 λ¨Όμ € ν˜„μž¬ μ ‘μ†ν•˜κ³  μžˆλŠ” λΈŒλΌμš°μ €κ°€ 무엇인지λ₯Ό μ•Œμ•„λ³΄λŠ” 것이 μš°μ„ !

 

 

navigator 객체

navigator κ°μ²΄λŠ” λΈŒλΌμš°μ €μ— λŒ€ν•œ λ‹€μ–‘ν•œ 정보λ₯Ό μ €μž₯ν•˜λŠ” 객체이닀. (λΈŒλΌμš°μ € κ³΅κΈ‰μž, 버전 정보 μ™Έ..)
λΈŒλΌμš°μ €μ˜ κΈ°λ³Έ μ–Έμ–΄, μ‹€ν–‰λ˜κ³  μžˆλŠ” 운영체제 λ“± μ—¬λŸ¬ 가지λ₯Ό μ•Œ 수 μžˆλ‹€!

platform μ†μ„±μœΌλ‘œ ν˜„μž¬ λΈŒλΌμš°μ €μ˜ 운영체제 확인

 

 

 

λΈŒλΌμš°μ € νƒ€μž… 확인

이 navigator 객체의 속성 쀑 ν•˜λ‚˜μΈ userAgentλ₯Ό ν†΅ν•΄μ„œ ν˜„μž¬ μ ‘μ†ν•˜κ³  μžˆλŠ” λΈŒλΌμš°μ €μ˜ μ’…λ₯˜λ₯Ό μ•Œ 수 μžˆλ‹€.
ν•˜μ§€λ§Œ 막상 λΈŒλΌμš°μ €λ³„λ‘œ 좜λ ₯해보면 κ²°κ³Όκ°€ λΉ„μŠ·λΉ„μŠ·ν•œ 것을 μ•Œ 수 μžˆλŠ”λ°..

 

  • 크둬

 

  • μ‚¬νŒŒλ¦¬

μ΄λŠ” λŒ€λΆ€λΆ„μ˜ λΈŒλΌμš°μ €λ“€μ΄ mozlia λ Œλ”λ§μ„ λ”°λ₯΄κΈ° λ•Œλ¬Έμ—, λΈŒλΌμš°μ € λ Œλ”λ§ 엔진 κΈ°μˆ μ„ κ³΅μœ ν•˜κ³  있기 λ•Œλ¬Έμ΄λΌκ³  ν•œλ‹€.

 

 

κ·Έλž˜μ„œ μ’€ 더 μ„ΈλΆ€μ μœΌλ‘œ μ•„λž˜μ™€ 같이 ν•¨μˆ˜λ₯Ό μž‘μ„±ν•˜λ©΄ μ’€ 더 λͺ…ν™•ν•˜κ²Œ λΈŒλΌμš°μ € νƒ€μž…μ„ 리턴할 수 μžˆλ‹€.

function checkBrowser() {
  const agent = navigator.userAgent.toLowerCase();
  if (agent.indexOf('chrome') != -1) return 'Chrome';
  if (agent.indexOf('opera') != -1) return 'Opera';
  if (agent.indexOf('firefox') != -1) return 'Firefox';
  if (agent.indexOf('safari') != -1) return 'Safari';
  if (agent.indexOf('mozilla/5.0') != -1) return 'Mozilla';
}

 

 

μ μš©ν•œ μ½”λ“œλ₯Ό 보면, κ°€μ Έμ˜¨ λΈŒλΌμš°μ € νƒ€μž…μ—μ„œ μ‚¬νŒŒλ¦¬μΌ κ²½μš°μ—λ§Œ λ³„λ„μ˜ μ΄λ²€νŠΈλ¦¬μŠ€λ„ˆλ₯Ό μΆ”κ°€ν•΄μ£Όμ—ˆλ‹€.

const browser = checkBrowser();

function startGameOnSafari() {
  playing();
  startTimerLayer.classList.toggle('is-active');
}

function startGame() {
  if (browser === 'Safari') {
    startTimerLayer.addEventListener('click', startGameOnSafari);
  } else {
    playing();
  }
}

window.addEventListener('load', startGame);

 

 

μ‚¬νŒŒλ¦¬μ—μ„œλ§Œ μ μš©λ˜λŠ” SCSS μ½”λ“œ

μ‚¬νŒŒλ¦¬μ—μ„œλ§Œ μ μš©λ˜λŠ” SCSSλ₯Ό μœ„ν•΄μ„œλŠ” μ•½κ°„μ˜ κΌΌμˆ˜κ°€ ν•„μš”ν•˜λ‹€.
λΈŒλΌμš°μ €μ—μ„œ -webkit-appearance: none 을 지원할 λ•Œ μ μš©λ˜λŠ” μ½”λ“œ.

    @media not all and (min-resolution: 0.001dpcm) {
        @supports (-webkit-appearance: none) {
            @content;
        }
    }

 

 

λ‚˜μ˜ κ²½μš°λŠ” is-safari λΌλŠ” 클래슀λ₯Ό 톡해 μ‚¬νŒŒλ¦¬μ—μ„œλ§Œ λ³΄μ—¬μ§ˆ 수 μžˆλ„λ‘ ν–ˆλ‹€.

 @media not all and (min-resolution: 0.001dpcm) {
    @supports (-webkit-appearance: none) {
      &.safari-only {
        display: block;
      }

      &.safari-only.is-active {
        display: none;
        opacity: 0;
      }
    }
  }

 

 

그럼 μ΄λ ‡κ²Œ, μ‚¬νŒŒλ¦¬ λΈŒλΌμš°μ €μ—μ„œλ§Œ LET'S GO! λΌλŠ” ν…μŠ€νŠΈ μ˜μ—­μ΄ λ¨Όμ € λ‚˜μ˜€κ³  이λ₯Ό λˆŒλ €μ„ λ•Œ μΉ΄μš΄νŠΈκ°€ μ‹œμž‘λœλ‹€!

728x90