๐ฉ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง
์ด๋ ๋ธ๋ผ์ฐ์ , ๊ธฐ๊ธฐ์์ ์ฌ์ดํธ๊ฐ ์๋๋ ๋๋ก ๋์ํ๋๋ก ์ ์ํ๋ ๊ธฐ๋ฒ
๋ชจ๋ฐ์ผ Firefox์์ ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ด ๋์ง ์๋ ์ค๋ฅ ๋ฐ์
๐ฉ ๋ก๊ทธ์ธ ๊ธฐ์กด ๊ตฌํ ์ฌํญ
Firebase Authentication์ ์ด์ฉํด์ ๋ฐ์คํฌํ์์ ์ ์ํ๋ฉด ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ด popup ์ฐฝ์ผ๋ก ๋จ๊ณ , ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ์ ์ํ๋ฉด redirect ๋๋๋ก ๊ตฌํํ์์ต๋๋ค.
![]() |
![]() |
๋ฐ์คํฌํ๊ณผ ๋ชจ๋ฐ์ผ ๋ก๊ทธ์ธ ๋ฐฉ์์ ๋๋ ์ด์ ๋ popup ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํด๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์ ์ ์์ ์ผ๋ก ๋ก๊ทธ์ธ์ด ๋์์ต๋๋ค. ํ์ง๋ง popup ์ฐจ๋จ ๋ฉ์์ง๊ฐ ๋ฐ์ํ์ฌ ๋ถํธ์ ์ค์ด๊ธฐ ์ํด redirect ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ์์ต๋๋ค.
// ๋ชจ๋ฐ์ผ ํ๋ณ
export default function isMobile() {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}
๐ฉ Firefox ๊ตฌ๊ธ ๋ก๊ทธ์ธ ๊ฐ์
๋ชจ๋ฐ์ผ ๋ธ๋ผ์ฐ์ ํ ์คํธ ์ค, Firefox์์ ๋ก๊ทธ์ธ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ ์ ๋ธ๋ผ์ฐ์ ๊ฐ Firefox์ธ ๊ฒฝ์ฐ popup ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ๋ณ๊ฒฝํ์ฌ, ์ ์์ ์ผ๋ก ๊ตฌ๊ธ ๋ก๊ทธ์ธ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค.
- firefox์ ํฅ์๋ ์ถ์ ๋ฐฉ์ง ๊ธฐ๋ฅ์ด ์์ธ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
(https://stackoverflow.com/questions/41055699/why-does-firebase-auth-work-for-chrome-but-not-firefox)
export default function isMobile() {
if (/Firefox/i.test(navigator.userAgent)) return;
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}
Firefox์ css
zoom ์์ฑ
Firefox์์ ์ฝ์์ฐฝ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๊ณ ๊ฐ ๋์์ต๋๋ค.
zoom ์์ฑ์ checkbox ํ์ ์ input ํฌ๊ธฐ๋ฅผ ํค์ฐ๋๋ฐ ์ฌ์ฉํ๊ณ ์์๋๋ฐ, Firefox์์๋ ํด๋น ์์ฑ์ ์ง์ํ์ง ์๊ณ ์์์ต๋๋ค.
scale ์์ฑ์ ์ฌ์ฉํด์ checkbox ํฌ๊ธฐ๋ฅผ ํค์ธ ์ ๋ ์์์ง๋ง, scale ์์ฑ์ IE ์์ ์ง์ํ์ง ์๊ณ ์์์ต๋๋ค.
์กฐ๊ธ ๋ ์์ ํ๊ฒ width์ height๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ต๋๋ค.
number ํ์ ์ input: ํ์ดํ ๋ฒํผ
number ํ์ ์ input์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐ์ธก์ ํ์ดํ ๋ฒํผ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ธฐ์กด์๋ ๋ค์๊ณผ ๊ฐ์ ์์ฑ์ ์ฌ์ฉํด์ ํ์ดํ ๋ฒํผ์ ์ ๊ฑฐํ์ต๋๋ค.
input::-webkit-inner-spin-button {
-moz-appearance: none;
-webkit-appearance: none;
appearance: none;
}
๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์๋ ์ ๊ฑฐ๋์์ง๋ง, Firefox๋ ํ์ดํ๊ฐ ๊ทธ๋๋ก ๋ํ๋๊ณ ์์์ต๋๋ค.
ํ์ดํ ๋ฒํผ์ด ์ ๊ฑฐ ๋ ์ ์๋๋ก css๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํ์ต๋๋ค.
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type='number'] {
-moz-appearance: textfield;
}