Jsdom: scrollHeight ์†์„ฑ์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2015๋…„ 02์›” 02์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jsdom/jsdom

scrollHeight ์†์„ฑ์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ(https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollHeight)?

feature layout

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@leepowellcouk ๊ตฌ์„ฑ ์— configurable: true ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

Object.defineProperty(HTMLElement.prototype, "scrollHeight", {
  configurable: true,
  get: function() {
    return this._scrollHeight || 0;
  },
  set(val) {
    this._scrollHeight = val;
  }
});

๋ชจ๋“  4 ๋Œ“๊ธ€

์†์„ฑ ์ž์ฒด๋Š” ํฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ created ์ฝœ๋ฐฑ์—์„œ ์ง์ ‘ ํŒจ์น˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์œ ์šฉํ•œ ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” scrollHeight ์†์„ฑ์˜ ๊ฒฝ์šฐ jsdom์€ ์‹œ์ž‘ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋„ (์ ์–ด๋„) ๋„ˆ๋ฌด ๋จผ ๋ ˆ์ด์•„์›ƒ ์ž‘์—…์„ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

div ๋‚ด๋ถ€์— ์˜ค๋ฒ„ํ”Œ๋กœ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด scrollHeight๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋Œ€์‹  PhantomJS/SlimerJS๋ฅผ ์‚ดํŽด๋ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ต๋ณ€ ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์กฐ๋กฑํ•  ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹œ๋„ํ–ˆ๋‹ค :

Object.defineProperties(window.HTMLElement.prototype, {
  scrollHeight: {
    get() {
      return this._scrollHeight || 0;
    },
    set(val) {
      this._scrollHeight = val;
    }
  }
});

๊ทธ๋ฆฌ๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค: Cannot redefine property: scrollHeight

@leepowellcouk ๊ตฌ์„ฑ ์— configurable: true ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

Object.defineProperty(HTMLElement.prototype, "scrollHeight", {
  configurable: true,
  get: function() {
    return this._scrollHeight || 0;
  },
  set(val) {
    this._scrollHeight = val;
  }
});
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰