프로그래밍/javascript

[CKeditor]setCustomData 에러

guitarhero 2017. 12. 21. 17:23
728x90

영어 : TypeError: Cannot read property 'setCustomData' 

한글 : SCRIPT5007: 정의되지 않음 또는 null 참조인 'setCustomData' 속성을 가져올 수 없습니다. 


위의 에러에 대해서 해결해 보겠다. 

Fckeditor-> ckeditor로 업그레이드 하면서 이미지 업로드 기능까지 모두 끝났다고 생각했는데

이미지 업로드때는 불러오던 속성을 가져오지 못하는 상황이 었다. 

그래서 이게 js에서 추가로 기능 구현을 해주거나 해야하는 건줄 알았는데.....

기능 오류.... ㅠㅠ 이걸로 며칠을 헤맸는데 ㅠ


나처럼 헤매는 사람 없도록 이렇게 올려본다(이상하게 한글 해결방법은 없더라.. 나만 만난거냐...)


그래서 영어로나 한글로 ckeditor cannot load image attributes 등 아무리 찾아도 나오는건 


config.allowedContent = true


하지만 내가 왜 콘솔로그를 소홀히 했던가.. 자바스크립트에서 기능이 안될때는 콘솔로그를 빼놓지 않고 보던 나였는데...

암튼 각설하고 콘솔로그에 위와 같은 에러 메시지가 있어서 검색해보니 여러가지 페이지 들이 나왔지만 

그중에서 여기를 보고 해결했다. 


우선 ckeditor lib의 image.js의 true로 되어있는 부분을 아래로 수정해주고


original.setCustomData( 'isReady', 'false' );


CKEDITOR.on('dialogDefinition', function( ev ){
		var editor = ev.editor;
        var dialogName = ev.data.name;
        var dialogDefinition = ev.data.definition;

        switch (dialogName) {
            case 'image': //Image Properties dialog
                //dialogDefinition.removeContents('info');
            	dialogDefinition.dialog.on('show', function(e){
        	      var dialogBox = e.sender;
        	       //this line will get rid of the error setCustomData
        	      dialogBox.originalElement = editor.getSelection().getStartElement();
        	      this.selectPage("Upload");
        	    });
                dialogDefinition.removeContents('Link');
                dialogDefinition.removeContents('advanced');
                break;
        }
    });


위와 같이 작업해 주니 해결되었다. 

dialogBox.originalElement = editor.getSelection().getStartElement();

이 부분이 키포인트이다. 


모두 나와같은 삽질은 하지 마시길.... 

728x90