파파즈(fafaz) 게시판과 관련하여 치명적인 오류를 발견했는데 제작자님께서 요즘 방문이 뜸하셔서 혼자 해결해보려고 합니다.
해결해주시면 꼭 사례하겠습니다.
다름이 아니라 댓글 창에서 댓글 삭제 또는 수정 부분 js 파일 문제인데요.
비회원이 댓글 메뉴 선택창을 열어서 '수정' 또는 '삭제'를 누르면 원래 비밀번호 입력 창이 떠야 정상인데
Cannot read property 'querySelector' of null라는 오류가 뜨면서 창이 뜨지 않습니다.
querySelector의 반환값이 null로 나와서인 건 알겠는데 문제는 크롬과 파이어폭스가 아닌 IE에서 했을 때는 정상적으로 작동한다는 게 좀 황당합니다. 보통 js 코드가 IE에서 작동 안되고 크롬이나 파이어폭스에서는 가능한 경우만 봐와서요.
u = function(d) { if ("function" === typeof window.Event) return new Event(d); var m = document.createEvent("Event"); m.initEvent(d, !0, !0); return m }, y = function(d, m) { var p = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null, b = u("click"); document.querySelector(".getPermission").dispatchEvent(b); var c = document.getElementById("get_permission_temp"); c.querySelector(".modal-content__inner").innerHTML = '<div class="get-permission u-clearfix"><input class="get-permission__input u-floatLeft" type="password" name="password" placeholder="\ube44\ubc00\ubc88\ud638" /><a href="javascript:;" class="get-permission__submit permission-submit fafazBtn u-textAlignCenter u-floatLeft">\uc785\ub825</a></div>'; c.querySelector(".permission-submit").addEventListener("click", function() { var b = { document_srl: d, comment_srl: m, password: c.querySelector('input[name="password"]').value }; a("board.procBoardVerificationPassword", b, function(d) { alert("\uad8c\ud55c\uc744 \ud68d\ub4dd\ud558\uc600\uc2b5\ub2c8\ub2e4."); p && "function" === typeof p && p() }) }) },
bundle_modify.js에서
c.querySelector(".modal-content__inner").innerHTML = '<div class="get-permission u-clearfix"><input class="get-permission__input u-floatLeft" type="password" name="password" placeholder="\ube44\ubc00\ubc88\ud638" /><a href="javascript:;" class="get-permission__submit permission-submit fafazBtn u-textAlignCenter u-floatLeft">\uc785\ub825</a></div>';
이 부분에서 오류가 납니다. 아마 추측컨대 querySelector(".modal-content__inner") 값이 null로 나와서인듯 한데... 왜 IE에서는 오류 없이 정상 작동하고 크롬이나 파이어폭스에서는 작동하지 않는지, 어떻게 해결하면 좋을지 알려주실 수 있으실까요?
부탁드립니다. 꼭 사례하겠습니다.
오류나는 곳
https://www.sangsanblog.com:5000/council_notice/2784
에서 c가 null이라 null의 하위 함수인 querySelector가 되지 않는 것이겠지요
따라서 c가 undefined일때는 해당 함수를 실행하지 않도록 하면 됩니다