๊ตฌ์ฑ:
๋ฌธ์ ๋ฅผ ์ฌํํ๋ ๋จ๊ณ:
์์๋๋ ๋์์ ๋ฌด์์ ๋๊น? (์คํฌ๋ฆฐ์ท ์ถ๊ฐ)
๋ฌด์์ด ์๋ชป๋์๋์? (์คํฌ๋ฆฐ์ท ์ถ๊ฐ)
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฏ๋ก ์์ ํ์ง ์์ ๊ฐ์ฒด์ ์์ฑ์ ์์ ํด์๋ ์ ๋ฉ๋๋ค. ์ง์๋๋ ์ผ๋ถ ํ๊ฒฝ์์ ๋๋ฝ๋ ํน์ API๊ฐ ํ์ํ ๊ฒฝ์ฐ ๊ธฐ๋ณธ API๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ shimmed ๋ฒ์ ์ ์ฌ์ฉํ๋ ํจ์์์ ์ฌ์ฉ๋ฒ์ ๋ํํ ์ ์์ต๋๋ค.
๋ทฐ์ด ๋งํฌ(mozilla.github.io/pdf.js๊ฐ ์๋ ๋ค๋ฅธ ์ฌ์ดํธ ๋๋ Firefox/Chrome ํ์ฅ์ผ๋ก ํธ์คํ
๋๋ ๊ฒฝ์ฐ):
http://plnkr.co/edit/YFCQM2Px0QU0KnGzsAlM?p=preview
๋ค์ IE11-๋ถ์์ ํ ๋ณด์ ๊ฒ์ฌ Angular ๋ ผ๋ฆฌ์์ PDF.js ํด๋ฆฌํ๋ก ๋น๋์ ์ ๊ฐํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค... ์ข์ต๋๋ค. ์ด ๊ฒฉ์ฐจ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ๋จํ ๋ฒ๊ทธ๋ก ํ์:
document.location.origin
๋ 'origin' ์์ฑ์ด ์์ผ๋ฉด ์ URL(document.location.href).origin์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.HTMLScriptElement.prototype
๋ ์์ ์ ์ฌํ ๋
ผ๋ฆฌ๋ฅผ ๊ฐ์ง ์ค๋ฆฌ์ง ๋ฐ ํ๋กํ ์ฝ ๊ฒํฐ๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค.@yurydelendik ์ ์๊ฒ ์ด๊ฒ์ MooTools๊ฐ ๋ถ๋ถ ํด๋ฆฌํ์ ์ ์ฉํ๊ณ ์ด์ ๋ฐ๋ผ ์น์์ ์ฝ๋๊ฐ ์์๋์๊ธฐ ๋๋ฌธ์ ๋ช ๊ฐ์ง Web API์ ์ด๋ฆ์ ๋ณ๊ฒฝํด์ผ ํ๋ ์ํฉ๊ณผ ์ ์ฌํฉ๋๋ค.
ํด๋ฆฌํ๋ง์ ์ํํฉ๋๋ค. IMO๋ ์์ ํ ํด๋ฆฌํ๋ก๋ง ์ํํด์ผ ํ๋ฉฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ ์ต์ข ์ฑ์์๋ง ์ํํด์ผ ํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ด๋์์๋ ์ฌ์ฉํ ์ ์๋ ํน์ API๊ฐ ํ์ํ ๊ฒฝ์ฐ ๊ธฐ๋ณธ API๋ฅผ ์ ํธ๋ฆฌํฐ ํจ์๋ก ๋ํํ๊ณ ํด๋น ํจ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด์ ๊ฐ์ ๊ฐ๋ฅํ ๋ฒ๊ทธ์ ์ ์ฒด ํด๋์ค๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
์์ปจ๋: ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ ์์ ํ์ง ์์ ๊ฐ์ฒด(์: ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ ์ ์ญ)๋ฅผ ์์ ํด์๋ ์ ๋ฉ๋๋ค.
ํด๋ฆฌํ์ ์ํํ๋ค
@mgol ์ค, ๋์ํฉ๋๋ค. ์ ์ฒด PDF.js ๋ทฐ์ด ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฒด ์๋๋ฐ์ค(iframe ๊ถ์ฅ)์ ์์ด์ผ ํ์ง๋ง ์ฌ๋๋ค์ ๋ ํฐ ์์ฉ ํ๋ก๊ทธ๋จ ๋ด์์ ๊ณ์ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ๊ทธ์ ๋ฐ๋ผ ๋์ํด์ผ ํฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ ์์ ํ์ง ์์ ๊ฐ์ฒด(์: ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ ์ ์ญ)๋ฅผ ์์ ํด์๋ ์ ๋ฉ๋๋ค.
๋ค๋ฅธ ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ํ์ํ๋ ๋ฐฐ์ด์ด ์์ผ๋ฉด Promise
PDF.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ผํ์ง ์์ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ญ ๊ฐ์ฒด๋ฅผ ์์ ํ์ง ์์์ผ๋ก์จ ์ฝ๋๋ฅผ ์ฝ์ ์ ์๊ฒ ๋ง๋ค๊ณ ๋๋ถ๋ถ์ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ฑ๋ฅ์ ์ ํ์ํฌ ์ ์์ต๋๋ค.
๋ค๋ฅธ ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ํ์ํ๋ ๋ฐฐ์ด์ด ์์ผ๋ฉด Promise PDF.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์ผํ์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ญ ๊ฐ์ฒด๋ฅผ ์์ ํ์ง ์์์ผ๋ก์จ ์ฝ๋๋ฅผ ์ฝ์ ์ ์๊ฒ ๋ง๋ค๊ณ ๋๋ถ๋ถ์ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ฑ๋ฅ์ ์ ํ์ํฌ ์ ์์ต๋๋ค.
๋ฐ๋์๋ ์๋๋๋ค. ์ ์ญ์ ๊ฐ๋ฆฌ๋ ์์ฒด ๋ด๋ถ ๋ณ์ ์ธํธ๋ฅผ ์ ์งํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค๋ฃจ์ง๋ ์์ ์ ์์ง๋ง ์ ์ด๋ ์ฝ์์ ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒ:
var Promise = window.Promise || PROMISE_POLYFILL;
PDF.js ์๋จ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ ์ญ์ ๊ฑด๋๋ฆฌ์ง ์๊ณ ์ฝ๋์์ ๋ณ๊ฒฝ ์์ด Promise
๋ฅผ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ต์ ๋ธ๋ผ์ฐ์ ์ ๊ฐ๋จํ ๋ณ์นญ์ด๋ฏ๋ก ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
๋ชจ๋ ๊ฒฝ์ฐ์ ๊ทธ๋ ๊ฒ ์ฝ์ง๋ ์์ ์๋ ์์์ ์ดํดํฉ๋๋ค(์: ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ๋ง ํด๋ฆฌํํด์ผ ํ๋ ๊ฒฝ์ฐ)
PDF.js ์ฝ๋๊ฐ ES6 ๋ชจ๋์ ์ฌ์ฉํ๋๋ก ๋ณํ ์ค์ ๋๋ค. ํฌ์ฅ ํ๋ก๊ทธ๋จ์ด ์๋์ผ๋ก ํด๋ฆฌํ์ ์ ๊ณตํ์ง ์๋ ํ ์์ ์ ๊ทผ ๋ฐฉ์์ atm์์ ๋ฌธ์ ๊ฐ ๋ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ๊ฐ๋ ๋ ผ๋ฆฌ ๋๋ pdf.js ํธํ์ฑ ์ ๊ทผ ๋ฐฉ์์ ๋ํ ๋ ผ์๋ก ๋ฐ๊พธ์ง ์๊ณ ์ถ์ต๋๋ค. ํด๋ฆฌํ์ ์์ ํ์ฌ ๊ฐ๋๋ฅผ ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. PR ํ์ํฉ๋๋ค :)
๋ค๋ฅธ ์๊ฐ์ผ๋ก ์ด ๋ฌธ์ ๋ ํด๊ฒฐ๋์ง ์์ผ๋ฏ๋ก ์ข ๋ฃํ๊ฒ ์ต๋๋ค. Angular+PDF.js+IE11 ์ค์ ์ฌ์ฉ์ ๋ํ ํ์ธ์ด ์์ต๋๋ค. ์๋ ๊ฒฝ์ฐ Angular.js๋ฅผ ํจ์นํ์ฌ ๊ฐ๋ ์ธก๋ฉด์์ ์ฝ๊ฒ ์์ ํ ์ ์์ต๋๋ค.
์๋ ํ์ธ์, ์ ๋ ์ด๊ฒ์ด ์ค๋๋ ์ฃผ์ ๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์์์ ์ค๋ช ํ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค.
PDF.js์ ํจ๊ป Angular 5๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ๊ฐ ์๊ณ IE11์ ์ง์ํด์ผ ํฉ๋๋ค. ์ ๋ Angular์ ์ด๋ณด์์ด๋ฏ๋ก "Angular.js๋ฅผ ํจ์น"ํ๋ ๋ฐฉ๋ฒ์ ์ ํํ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด ๊ฒฐํจ์ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ์ค ์ ์์ต๋๊น? ๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@elliotstoner ์ด ๋ฌธ์ ๋ Angular(2+)๊ฐ ์๋ AngularJS ํธํ์ฑ์ ๊ดํ ๊ฒ์ด๋ฉฐ ์๋ ๋ถํธ์คํธ๋ฉ ๋์ ng-app
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ์ ์ฉ๋ฉ๋๋ค. Angular 2+๋ ์๋ ๋ถํธ์คํธ๋ํ๋ ์ง์ํ์ง ์์ผ๋ฏ๋ก ์ด ๋ฌธ์ ๋ ์ ์ฉ๋์ง ์์ต๋๋ค.
@mgol Ah ok - ๊ทธ๋ผ ์๋ก์ด ์ด์๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค.