2011-08-28 2 views
5

사용자 스크립트를 수정하여 Chrome에서 작동하도록 설정했지만 크롬 창에 설치하여 대화 상자를 설치하면 대화 상자에 '올바르지 않습니다. 스크립트 헤더 '.Chrome에서 사용자 스크립트 디버깅 방법

발생하는 오류를 디버그하기 위해 개발자 도구 및 기본 제공 Javascript 콘솔을 사용해 보았지만 아무 정보도 표시되지 않습니다.

Console.app 나는 이미 알고있는 것과 동일한 오류 메시지를 제외하고는 의미있는 것이 없습니다.

[0x0-0x2d02d].com.google.Chrome: [346:1547:16686819618022:ERROR:extension_error_reporter.cc(55)] Extension error: Invalid script header.

어떻게하면이 오류 메시지를 적절하게 디버깅하고 헤더가 잘못된지 파악할 수 있습니까?

개발자 채널 OS 10.7 Lion에서 Chrome 15.0.861.0을 사용하고 있습니다.

+1

내가 * *이 할 수있는 도구가 있다고 생각하지 않습니다. 실제 코드를 여기에 게시하면 누군가가 오류를 발견 할 수 있습니다. 그렇지 않으면 좋은 구식의 스크립트와 나쁜 스크립트를 가져 와서 문제가 해결 될 때까지 차이점을 반으로 나누고 구식 방식으로 구하십시오. –

+0

코드를 http://gist.github.com/에 게시하십시오. – erikvold

답변

5

나는 Chromium Bug Report을 통해 재미있게이 질문에 대한 답을 찾았습니다.

내 질문에 대한 답변은 (매우 간단하게) Userscript Documentation for Chrome 페이지에 있습니다. 그것은, 내가 www.musicbrainz.org뿐만 아니라 musicbrainz.org을 일치하도록 시도하지만, 인용 텍스트 당 @match http://*musicbrainz.org을 사용하고있었습니다 나오는 것에 따라

With Greasemonkey-style @include rules, it is not possible for Chrome to know for certain the domains a script will run on (because google.* can also run on google.evil.com). Because of this, Chrome just tells users that these scripts will run on all domains, which is sometimes scarier than necessary. With @match, Chrome will tell users the correct set of domains a user script will run on.

그 실수 evilmusicbrainz.org 일치에서 당신을 저장하지 않습니다. 그래서, 내 해결책은 두 줄을 사용하는 것이었다 :

@match http://*.musicbrainz.org 및;
@match http://musicbrainz.org.

+0

이렇게하면 여분의 페이지에서 실행되는 스크립트를 설명하고 오류 메시지를 설명하지 않습니다. –

+0

Chrome은 보안 목적으로 "동일 출처"요청을 매우 강력하게 사용하고 재사용합니다. 나는'http : // */*'를 아주 잘 사용할 수 있지만 (예,'// */*'를 지정해야합니다), 두 번째 레벨 도메인을 지정하면 반드시 깨끗해야합니다. 두 번째 레벨 도메인에서 glob 할 수 없습니다. 이것은 TLD가 깨끗해야한다는 것을 의미합니다. 기본적으로 하위 도메인에 블로그를 올릴 수 있지만 그렇게 할 경우 두 번째 수준과 TLD를 지정하기 전에 점으로 구분해야합니다. – VxJasonxV

3

유형 :

debugger; 

코드의 어딘가에 및 웹 인스펙터는 해당 위치에 나타납니다. 나는 여기에 비슷한 질문에 대답했다가 // == UserScript == 헤더 정보 사이 오타의 원인을 accoured 것을 Chrome debugger inject javascript 나도 같은 오류 메시지 (INVALID SCRIPT HEADER를) 도착하는 동안 알아 낸

1

.

wronge 라인

// @run-at document.end

수정 라인

// @run-at document-end
관련 문제