스크립트 요소를 동적으로 생성하여 페이지에 추가 할 때 내 오류는 스크립트의 줄 번호가 아니라 대신 스크립트를 추가하는 줄 번호를 제공합니다.동적으로 추가 된 <script> 태그에서 오류의 회선 번호를 얻으려면 어떻게해야합니까?
.js 파일에서 다음 코드는 document.appendChild(script)
의 라인 번호 오류를 표시합니다. 코드 스 니펫 (실행 된 경우)은 올바른 행 번호를 반환합니다. 그들은 어떻게합니까?
스크립트 요소를 동적으로 생성하여 페이지에 추가 할 때 내 오류는 스크립트의 줄 번호가 아니라 대신 스크립트를 추가하는 줄 번호를 제공합니다.동적으로 추가 된 <script> 태그에서 오류의 회선 번호를 얻으려면 어떻게해야합니까?
.js 파일에서 다음 코드는 document.appendChild(script)
의 라인 번호 오류를 표시합니다. 코드 스 니펫 (실행 된 경우)은 올바른 행 번호를 반환합니다. 그들은 어떻게합니까?
알아보기
8
이 또한 예외가 유용 더 많은 정보를 가지고 있지만,이 질문에 대한 대답입니다 : 코드 주위에 시도 캐치를 추가하면 큰
catchableScript = function(scriptText) {
var scriptText = "try {\n"+scriptText+"\n} \n catch(ex){console.log(ex.lineNumber-1)}";
var script = document.createElement("script");
script.innerHTML = scriptText;
document.head.appendChild(script)
}
catchableScript("\n\n\n\n\n\n\nfoo.bar");
출력을 작동합니다.
window.CURRENTLY_EVALED_SCRIPT = scriptText;
var scriptText = "try {\n"+scriptText
+"\n} catch(ex){\n"
+"var lineNumber = ex.lineNumber-1;\n"
+"var errorOut = {};\n"
+"errorOut.exception = ex;\n"
+"errorOut.lines = window.CURRENTLY_EVALED_SCRIPT.split('\\n');\n"
+"var line = errorOut.lines[lineNumber-1];\n"
+"console.log(ex.message+' on line\\n'+line+' :: '+lineNumber, window.CURRENTLY_EVALED_SCRIPT_ELEMENT, errorOut);\n"
+"}";
...
window.CURRENTLY_EVALED_SCRIPT_ELEMENT = script
콘솔에서이 출력됩니다 :
foo is not defined on line
foo.bar :: 8, <script>, Object { exception: ReferenceError, lines: Array[8] }
그리고 당신이 가고 <script>
을 클릭하면이 코드를 추가 원하는 사람들을 위해
:
편집
추가 된 요소 또는lines
을 사용하면 모든 행의 배열을 볼 수 있습니다.
매력처럼 작동합니다.
는 "행 번호"라고
var script = document.createElement("script");
script.innerHTML = "\n\n\n\n\n\n\nfoo.bar"; //error should be on line 8
document.head.appendChild(script)
작성중인 스크립트는 DOM에서만 작동합니다. 즉, 코드의 메모리 내 표시입니다. 기대했던 것과 똑같은 행동을하는 것 같습니다.
나는 그렇게 생각한다. 그러나 오류를 잡으면 평가판에서 줄 번호를 얻을 수있다. 현재 창을 사용할 수 있는지 확인하고 있습니다 ... onerror로 잡아서 줄 번호 –
을 얻지 못했습니다. 오류 인 문자열 만 가진 window.onerror 호출 –
http://meta.stackoverflow.com/questions/336082/the-searchbar-works-better-with-tags-than-questions-explaining-this-could-reduc?noredirect=1#comment403450_336082 –
무언가가 나타났습니다. 사이드 바에서 http://stackoverflow.com/questions/20838067/catch-js-errors-when-adding-a-script-dynamically?rq=1 –
이전 질문은이 답변에 영감을 불어 넣었지만 그렇지 않습니다. 정말로 보여줘. –