2011-10-23 2 views
1

타사 웹 사이트에서 Chrome 애플리케이션을 개발 중입니다.페이지로드 전에 Chrome 확장 삽입 스크립트

내가 변경하려고 문서는 다음 페이지 형식이 있습니다)

<head> 
. 
.meta data here 
. 
</head> 
<body> 
    <script type="text/javascript"> 
    function a1(){ 
     ..contents of function a1 
    } 
    </script> 

    . 
    .other contents of body 
    . 
    <script type="text/javascript"> 
    a1(); // <-- I don't want this to be executed 
    </script> 
</body> 

내 문제는 함수 호출 A1 제외하고, 나는 전체 페이지를로드 할 원하는입니다 (;

그래서 나는 간단한 해결책을 생각했다 : 함수 정의 즉; 함수 a1() {..}, 나는 아무것도하지 않는 상수 함수로 a1을 만들고 싶기 때문에 a1() 호출을 쓸모 없게 만든다.

문제점 : run_at document_start 내 j에서 상수가되도록 함수를 정의하면 실행 환경이 달라 문제가 발생하지 않습니다. 그래서 대체가 동일한 실행 환경에서 실행

은 주입에 의해 innerHTML을가 + = "..."

또 다른 대안은 "createElement와"를 사용하여 스크립트 요소를 구성하는 사용하여 코드이며, SRC는 외부 JS입니다 실행 전에로드되어야하는 파일.

run_at document_start 스크립트에서 구문 분석 트리가 작성되지 않으므로 두 가지 대안이 모두 작동하지 않습니다.

그래서 나는 다른 해결책을 생각했습니다. DOMModifySubTree 이벤트에 대한 리스너를 추가하여 구문 분석 시퀀스를 변경하기를 바랐습니다. (나는 재미 있습니다. :)) 함수가 호출되지 않도록합니다. 도움이되지 않습니다.

그래서, 내 질문에 어떻게 a1() 함수에 대한 호출을 방지 할 수 있습니까 ?? P.S. - 제 3 자 웹 사이트 개발자에게 연락 할 수 없습니다.

+0

"타사 웹 사이트의 크롬 애플리케이션"이란 하나의 타사 사이트, 크롬 브라우저 만 타겟팅하는 웹 앱 또는 다른 것을 의미하는 크롬 확장을 의미합니까? –

답변

0

늦게 답장을 보내 드려 죄송합니다. 함수 호출을 건너 뛰기 위해 원래했던 일은 문서 시작시 스크립트를 실행하고 JS가 별도의 envi에서 실행될 때 "문서"에 삽입하는 것입니다. 따라서 본질적으로 파괴, (그것이 더미의 기능을 실행하는 예)이 주입 된 스크립트 나

const a1=function(){}; 

이 방법 함수가 다시 선언 될 때, 이에 따라 기능이 실행되지 않고, 덮어 쓰지 사용 암호. :)

1

Greasemonkey 당신이 찾고있는 것입니다.
은 자신의 스크립트을 원하는 웹 페이지에 삽입하는 Firefox 확장 프로그램입니다.
wiki.greasespot.net을 방문하여 스크립트 작성을 시작하십시오.

다행히 Chrome은 기본적으로 Greasemonkey 스크립트를 지원합니다. 자세한 내용은 this page을 참조하십시오.

+1

대안을 찾았습니다. 어쨌든 고마워. 해결책은 나의 오래된 아이디어와 유사합니다. window.location = "javascript : const a1 = function() {};"을 사용했습니다. – Akshay

+0

@Akshay 해답 (관련 코드 포함)을 답으로 게시하고 동의하십시오. 미래의 SO 사용자는 귀하의 솔루션이 도움이 될 수도 있습니다. –

+0

재 정의하려는 것에 대한 구체적인 세부 사항을 모르겠지만 재정의 오류로 인해 'a1()'이 * 원래 정의 된 것과 동일한 블록에서 코드가 실행되지 않도록주의해야합니다.따라서 페이지의 일부 기능이 중단 될 수 있습니다. – galambalazs

관련 문제