Chrome에서 인라인 Javascript로 중단 점을 설정하는 방법은 무엇입니까?


211

Chrome에서 개발자 도구를 열면 프로필, 타임 라인 및 감사와 같은 모든 종류의 기능이 표시되지만 js 파일과 html 및 자바 스크립트 코드 모두에서 중단 점을 설정할 수있는 것과 같은 기본 기능이 없습니다! 자바 스크립트 콘솔을 사용하려고했습니다. 예를 들어 JS 오류가 발생하면 전체 페이지를 새로 고치지 않으면 벗어날 수 없습니다. 누군가 도울 수 있습니까?


나는 크롬을 포기했다. Firefox로 시험을보고 몇 초 안에 중단 점이 발생했습니다. Chrome에서 가능할 수도 있지만 방법이 확실하지 않습니다!
Oliver P

답변:


127

소스 탭을 사용하면 JavaScript에서 중단 점을 설정할 수 있습니다. 그 아래의 디렉토리 트리 (위쪽 및 아래쪽 화살표가 있음)에서 디버깅하려는 파일을 선택할 수 있습니다. 같은 탭의 오른쪽에있는 다시 시작을 누르면 오류가 발생할 수 있습니다.


31
어떤 이유로 든 포함 된 js 파일 목록이 표시되지만 실행 페이지 자체를 선택할 수 없으며 목록에 표시되지 않습니다. 어떤 아이디어?
ulu

67
@ulu, 나는 같은 문제가 있었다. type = "text / javascript"속성이 <script> 요소에 설정되어 있는지 확인하십시오.
contactmatt

9
HTML5에서이 속성은 더 이상 필수가 아닙니다. 디버그하기 위해 소스 코드를 변경하지 않습니다!
sashok_bg

10
난 type = "text / javascript"를 추가 한 후 참조 해달라고
니틴 쿠마르 슈라

3
이것이 작동하지 않고 다음과 같은 인라인 자바 스크립트 코드가있는 경우 : <script> your code </script>같은 이름을 추가하십시오 : <script> your code //# sourceURL=somename.js </script> 이것은 아래 답변에서 더 잘 설명됩니다
KM.

209

<script>태그 또는 HTML 태그 속성 내의 코드에 대해 이야기하고 있습니까?

<a href="#" onclick="alert('this is inline JS');return false;">Click</a>

어느 쪽이든, 다음debugger 과 같은 키워드 가 작동합니다.

<a href="#" onclick="debugger; alert('this is inline JS');return false;">Click</a>

debugger개발 도구가 열려 있지 않으면 NB Chrome이 s 에서 일시 중지 되지 않습니다.


JS 파일 및 <script>태그 에서 속성 중단 점을 설정할 수도 있습니다 .

  1. 소스 탭을 클릭 하십시오
  2. 네비게이터 표시 아이콘을 클릭하고 파일을 선택하십시오.
  3. 왼쪽 여백에서 줄 번호를 두 번 클릭하십시오. 해당 행이 중단 점 패널 (4)에 추가됩니다 .

여기에 이미지 설명을 입력하십시오


4
스크립트 탭이 없습니다. 이 그림에는 있지만 다른 탭은 없습니다.!
ace

5
html의 scrip 태그 내에 중단 점을 설정할 수 있음을 의미합니다. 또한 디버거를 사용해 보았습니다. 키워드이지만 작동하지 않습니다. 크롬은 그 점에서 중단 점이 아니지만 Firefox에서 작동합니다. 코드에 많은 장소를 배치하고 삭제 해야하는 불편한 디버거 키워드를 기반으로하지 않는 중단 점 솔루션을 찾고 있습니다.
ace

2
스크립트 탭 아래의 드롭 다운에는 JS 파일 만 표시되지만 디버깅하려는 <script> 태그가 포함 된 HTML 파일은 표시되지 않습니다. FF의 Firebug의 드롭 다운도 비슷하지만 <script> 태그가 포함 된 HTML 파일도 나열합니다. 이것은 버그입니까, 인라인 JS 코드에서 중단 점을 설정하는 다른 방법이 있습니까?
볼프람 아놀드

8
지금 Sources대신 탭이 호출 됩니다 Scripts.
CoderDennis

1
html 임베디드 js를 디버깅하려고 할 때 개발자 영역에 빈 페이지가 나타납니다. 빈 소스 파일을 보면서 채우려면 새로 고쳐야했습니다.
HappyCoder86

73

스크립트 이름을 지정할 수도 있습니다.

<script> ... (your code here) //# sourceURL=somename.js </script>

ofcourse는 "somename"을 어떤 이름으로 대체하고;) 그러면 "Sources> top> (no domain)> somename.js"의 크롬 디버거에서 일반 스크립트로 볼 수 있으며 다른 스크립트처럼 디버깅 할 수 있습니다.


3
가장 쉽고 완벽한 방법입니다. 그러나 다른 사람들을 위해, 생산에 그것을 밀기 전에 그것을 제거하는 것을 기억하십시오.
Zameer Fouzan

2
세상에, 이것이 얼마나 도움이되었는지 전혀 모른다. 오 마이 갓이 훌륭하다. 나는 오랫동안 이런 것을 찾고있었습니다.
GregRos

나는이 (좋은) 아이디어를 사용했지만 소스 탭에서 새 파일을 볼 수 없으며 html 파일 만 볼 수있었습니다. 그런 다음 코드를 실행하고 콘솔에서 스크립트로 작성된 모든 메시지의 오른쪽에서 코드에 대한 링크를 볼 수 있습니다. 가장 좋은 부분은 링크에 스크립트에 지정한 파일 이름 (예 : // # sourceURL = somename.js)이 표시된다는 것입니다.
Manuel Rivera

1
내가 할 수 있다면 나는 1000 upvotes을 줄 것이다;) 매우 유용한 트릭
Giulio Quaresima

43

스크립트가 포함 된 페이지를 새로 고치면 개발자 도구가 스크립트 탭에서 열립니다. 그러면 스크립트를 포함한 페이지의 html을 보여주는 (프로그램) 항목이 파일 목록에 추가됩니다. 여기에서 중단 점을 추가 할 수 있습니다.


이것은 나를 위해 작동하지 않았습니다. 대신 오른쪽 하단의 스크립트 오류 아이콘을 클릭하여 스크립트 탭에서 프로그램 파일을 열었습니다.
sanbikinoraion 2013

1
감사! Chrome 69를 사용하면 소스 탭에 없더라도 작동했습니다. 페이지가로드되는 동안 개발자 도구를 여는 것이 핵심입니다.
Sam

이것이 내 질문이라면 이것이 받아 들여진 대답 일 것입니다. 감사합니다.
plumpNation

Chrome 83에서 작동했습니다. 내 환경에서 파일 이름은 앱의 URL을 기반으로합니다. 예를 들어 URL이 example.com/xxx/yyy 인 경우 파일 이름은 "yyy"입니다.
Helix Quar

18

특히 아약스가 반환 한 html 내부의 스크립트를 디버깅하는 또 다른 직관적 인 간단한 방법은 스크립트 안에 console.log ( "test")를 임시로 넣는 것입니다.

이벤트를 시작하면 개발자 도구 내에서 콘솔 탭을여십시오. "test"디버그 인쇄 문의 오른쪽에 소스 파일 링크가 표시됩니다. 소스 (VM4xxx와 같은 것)를 클릭하기 만하면 중단 점을 설정할 수 있습니다.

추신 : 게다가, @Matt Ball이 제안하는 것과 같이 크롬을 사용하는 경우 "디버거"문을 넣는 것을 고려할 수 있습니다


10

내 상황과 해결 방법 :
HTML 페이지에 다음과 같이 javascript 파일이 포함되어 있습니다.
페이지 이름 : test.html

<!DOCTYPE html>
<html>
    <head>
        <script src="scripts/common.js"></script>
        <title>Test debugging JS in Chrome</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div>
         <script type="text/javascript">
            document.write("something");
         </script>

        </div>
     </body>
</html>

이제 Chrome에서 Javascript 디버거를 시작하고 스크립트 탭을 클릭하고 위와 같이 목록을 드롭 다운하십시오. 나는 명확하게 볼 수 있습니다 common.js를 / 스크립트를 하지만 내가 할 수 없습니다 현재 HTML 페이지 참조 test.html를 따라서 내가 포함 된 자바 스크립트를 디버깅 할 수 드롭 다운에서를 :

<script type="text/javascript">
  document.write("something");
</script>

그것은 당황했다. 그러나 임베디드 스크립트에서 더 이상 사용되지 않는 type = "text / javascript" 를 제거했을 때 :

<script>
  document.write("something");
</script>

.. 그리고 페이지를 새로 고치거나 새로 고쳤습니다.
나는 이것이 HTML 페이지에서 임베디드 자바 스크립트를 디버깅하는 데 문제가있는 사람에게 도움이되기를 바랍니다.


잘 했어! Mac 10.7.4의 Chrome 20.0.1132.57에서 테스트되었습니다. Chromium 프로젝트에 버그가 제출되었습니다.
화성 로버트슨

HTML 4 및 XHTML에서는 type필수 속성입니다. HTML5에서는 선택 사항입니다.
hotshot309

2
유형과 관련이 없습니다. 이 시점에서 관리자가 이미 열려 있지 않으면 스크립트는 실행 후 VM에 의해 수집됩니다. 페이지를 다시로드 할 때 스크립트가 수집되지 않았습니다.
vsevik

필자의 경우, 누락 <div>되어 디버거에서 코드를 볼 수 없었습니다.
ceztko

5

debugger;내 스크립트에 맨 위에 추가하면 나를 위해 일했습니다.


4

<script>태그에있는 JavaScript를 디버깅하는 방법에도 동일한 문제가있었습니다 . 그러나 "(index)"라는 소스 탭에서 괄호와 함께 찾았습니다. 줄 번호를 클릭하여 중단 점을 설정하십시오.

여기에 이미지 설명을 입력하십시오

크롬 71입니다.


2

'스크립트'탭이 보이지 않으면 올바른 인수로 Chrome을 시작해야합니다. 인수로 서버 측 JavaScript를 디버깅하기 위해 Chrome을 시작할 때이 문제가 발생했습니다 --remote-shell-port=9222. 인수없이 Chrome을 시작해도 문제가 없습니다.


좀 더 자세히 설명해 주시겠습니까? 이 정확한 문제가 있습니다-스크립트 탭을 전혀 볼 수 없습니다. Chrome의 최신 개발자 빌드를 다운로드했습니다.
Tom Redfern

2

이 문제를 겪었지만 인라인 함수는 angularJS보기를 사용하지 않았습니다. 따라서 디버거의 소스 탭에서 index.html 만 사용할 수 있었으므로로드에서 인라인 스크립트에 액세스하여 디버그를 추가 할 수 없었습니다.

이것은 내가 인라인으로 특정 뷰를 열 때 (이것에 대한 선택권이 없었습니다) 액세스 할 수 없음을 의미했습니다.

내가 칠 수있는 유일한 방법은 잘못된 함수를 넣거나 인라인 JS 함수 안에 호출하는 것이 었습니다.

내 솔루션은 다음과 같습니다.

function doMyInline(data) {
        //Throw my undefined error here. 
        $("select.Sel").debug();

        //This is the real onclick i was passing to 
        angular.element(document.getElementById(data.id)).scope().doblablabla(data.id);
    }

이것은 내 버튼을 클릭했을 때 크롬 콘솔에 프롬프트가 표시되었음을 의미합니다.

Uncaught TypeError: undefined is not a function 

여기서 중요한 것은 이것의 근원이었습니다. 이것을 VM5658:6클릭하면 인라인을 통해 단계별로 중단 점을 유지할 수 있습니다.

매우 복잡한 방법으로 도달 할 수 있습니다. 그러나 동적으로 뷰를로드하는 단일 페이지 앱을 처리 할 때 유용하고 유용 할 수 있습니다.

VM[n]유의 한 가치가없는, 그리고 n스크립트 ID로 동일시합니다. 이 정보는 여기에서 찾을 수 있습니다 : Chrome "[VM]"


1

Visual Studio (2012)를 사용 하여 동일한 문제가 발생했으며 IIS Express로 전환 하면 문제가 해결되었습니다!

script태그의 type속성은 그것으로 요인을하지 않았다.

어떤 이유로 Visual Studio Development Server 는 Chrome이 중단 점을 활성화하는 데 필요한 모든 것을 제공하지는 않습니다.


1

Q가 Firefox중요하지 않다는 것을 알고 있지만이 질문의 사본을 추가하여 직접 대답하고 싶지 않았습니다.

Firefox의 경우 @ matt-ball 이 태그에 제안한 것을 debugger;수행 할 수 있도록 추가해야합니다 .script

따라서 코드에서 debugger디버깅하려는 행 위에 추가 한 다음 중단 점을 추가 할 수 있습니다. 브라우저에서 중단 점을 설정하면 중지되지 않습니다.

이것이 Chrome에 관한 질문이라면 Firefox 답변을 추가 할 수있는 장소가 아닌 경우. 하지 말아야 할 것 :( 답을 빼면 어디에 게시해야하는지 알려 주면 행복하게 게시물을 이동할 수 있습니다. :)


0

이것은 위 의 Rian Schmits의 답변을 확장 한 것입니다. 필자의 경우 JavaScript 코드에 HTML 코드가 포함되어 있으며 HTML 코드 이외의 다른 것을 볼 수 없었습니다. 어쩌면 Chrome 디버깅이 수년에 걸쳐 변경되었지만 소스 / 소스 탭을 마우스 오른쪽 버튼으로 클릭하면 작업 영역에 폴더 추가가 표시됩니다 . 전체 프로젝트를 추가 할 수 있었으므로 모든 JavaScript에 액세스 할 수있었습니다. 이 링크에서 자세한 내용 확인할 수 있습니다 . 나는 이것이 누군가를 돕기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.