๐ŸŸฉ Frontend-HTML & CSS & +JS/๐Ÿ”ฐHTML & CSS & JQ

[JS] ๋™์ ์œผ๋กœ ๊ฒฝ๋กœ ์ถ”๊ฐ€ํ•˜๊ธฐ (window.location.pathname.includes('/sub/') ? '../' : ''; - ์‚ผํ•ญ์—ฐ์‚ฐ์ž ํ™œ์šฉ)

ramen2 2024. 9. 2. 18:16
๋ฐ˜์‘ํ˜•

| ๋ฌธ์ œ์ƒํ™ฉ

index.html๊ณผ sub/subpage.html ์€ ๊ฐ™์€ JS๋ฅผ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ.

๊ฐ™์€ mp3ํŒŒ์ผ์„ JS๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š”๋ฐ,

๊ฒฝ๋กœ๊ฐ€ ๋‹ฌ๋ผ์„œ JS๊ฐ€ sub/subpage.html ์—์„œ ๋™์ž‘ํ• ๊ฒฝ์šฐ'. ./ '๊ฐ€ ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•จ

 

$(document).ready(function () {
    const basePath = window.location.pathname.includes('/sub/') ? '../' : '';

    const audioPaths = {
        Bgm1_Fireplace: basePath + 'bgm/DC_fire.mp3',
        Bgm2_Rain: basePath + 'bgm/DC_rain.mp3',
        Bgm3_MxRedKeyboard: basePath + 'bgm/DC_hesper_Key_asmr.mp3',
    };
}
[๋ฐฉ๋ฒ•]
1. basePath ๊ณ„์‚ฐ: window.location.pathname.includes('/sub/')๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ๊ฒฝ๋กœ๊ฐ€ sub ํด๋” ์•ˆ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ sub ํด๋” ์•ˆ์— ์žˆ๋‹ค๋ฉด, basePath๋Š” '../'๋กœ ์„ค์ •๋˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋นˆ ๋ฌธ์ž์—ด('')๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

2. audioPaths์˜ ๊ฒฝ๋กœ ์ˆ˜์ •: ๊ฐ ๊ฒฝ๋กœ์— basePath๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ, ํ˜„์žฌ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ์˜ฌ๋ฐ”๋ฅธ ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ ์„ค์ •๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, index.html์—์„œ๋‚˜ sub ํด๋” ๋‚ด์˜ HTML ํŒŒ์ผ์—์„œ ๋ชจ๋‘ ๊ณตํ†ต์ ์ธ JavaScript ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

[์ž์„ธํ•œ ์„ค๋ช…]

1. window.location.pathname:ํ˜„์žฌ ์›น ํŽ˜์ด์ง€์˜ URL ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ์›น ํŽ˜์ด์ง€๊ฐ€ https://example.com/sub/page.html์— ์žˆ๋‹ค๋ฉด, window.location.pathname์€ '/sub/page.html'์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ ํŽ˜์ด์ง€๊ฐ€ https://example.com/index.html์— ์žˆ๋‹ค๋ฉด, window.location.pathname์€ '/index.html'์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2.includes('/sub/'):์ด ๋ฉ”์„œ๋“œ๋Š” window.location.pathname์—์„œ ํŠน์ • ๋ฌธ์ž์—ด('/sub/')์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฒฝ๋กœ๊ฐ€ '/sub/page.html'์ด๋ฉด includes('/sub/')๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.๋ฐ˜๋ฉด์— ๊ฒฝ๋กœ๊ฐ€ '/index.html'์ด๋ฉด includes('/sub/')๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

3.์‚ผํ•ญ ์—ฐ์‚ฐ์ž (? :):์ด ์—ฐ์‚ฐ์ž๋Š” ์กฐ๊ฑด ? ์ฐธ์ผ ๋•Œ์˜ ๊ฐ’ : ๊ฑฐ์ง“์ผ ๋•Œ์˜ ๊ฐ’์˜ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.์ด ๊ฒฝ์šฐ, window.location.pathname.includes('/sub/')๊ฐ€ true์ด๋ฉด '../'๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , false์ด๋ฉด ''(๋นˆ ๋ฌธ์ž์—ด)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


4. '../' ๋˜๋Š” '':../: ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, sub ํด๋” ๋‚ด์˜ HTML ํŒŒ์ผ์—์„œ /bgm/DC_fire.mp3๋ฅผ ์ฐธ์กฐํ•˜๋ ค๋ฉด ์ƒ๋Œ€ ๊ฒฝ๋กœ๋กœ ../bgm/DC_fire.mp3๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.'': ๋นˆ ๋ฌธ์ž์—ด๋กœ, ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํŒŒ์ผ์„ ์ฐธ์กฐํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, index.html๊ณผ ๊ฐ™์€ ์ตœ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ bgm/DC_fire.mp3 ํŒŒ์ผ์„ ์ฐธ์กฐํ•  ๋•Œ๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

 

์œ„์™€ ๊ฐ™์ด

๊ฒฝ๋กœ์ฃผ์†Œ๊ฐ€ '/sub'๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด  (.includes) (์‚ผํ•ญ์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜์—ฌ ํŒ๋ณ„ ? ์ฐธ์ด๋ฉด'../' ์ถ”๊ฐ€ : ์•„๋‹ˆ๋ฉด ๋นˆ๋ฌธ์ž์—ด' ' ์ถ”๊ฐ€

์ฆ‰, basePath๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ bgm paths๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ!

 

 

 

๋ฐ˜์‘ํ˜•