2013-12-17 3 views
1

필자는 IE6 용 웹 응용 프로그램 (10 년 전 필자가 짐작하고있는)을 사용하도록 강요 받았으며 IE (단점 모드의 최신 버전)에서만 작동합니다. 이벤트 처리기를 분리하고 DOM 호환 버전으로 바꾸는 스크립트를 주입하는 사파리 확장 기능으로 좀 더 심각한 자바 스크립트를 복구 할 수있었습니다.페이지 스크립트 전에 확장 스크립트를 트리거 할 수 있습니까?

저는 이제 내 관심을 완전히 망가 뜨리는 것보다 성가심으로 돌리고 있습니다. 사용자에게 진행 상황을 알리기 위해 경고를 많이 사용하면 고통 스럽습니다. 내 확장 기능을 사용하면 일부 css popovers로 window.alert 함수를 오버라이드하는 것이 꽤 좋을 거라고 생각했지만, 내가하는 도전은 http 포스트 다음에 전송 된 페이지와 관련이 있습니다. 첫 번째 작업은 표시입니다. 성공 (또는 실패) 알림.

this Apple documentation에 따르면 "시작 스크립트는 문서를 만들었지 만 웹 페이지가 파싱되기 전에 실행됩니다". 나는 페이지가 구문 분석되지 않았다면 페이지의 본문 스크립트 태그에있는 스크립트가 실행되지 않을 것이라고 생각했을 것이다. 그러나 이것은 내가 보는 행동이 아니다. 대신, 내 시작 스크립트가로드되기 전에 게시 응답에서 반환 된 페이지의 모든 스크립트가 실행되는 것처럼 보입니다.

테스트하려면 콘솔 location.href에 기록하고 console.log로 window.alert를 바꾸는 간단한 시작 스크립트가 있어야합니다.

주입 된 시작 스크립트 :

console.log(window.location.href + "loaded killAlert.js") ; 
window.alert=function(str) { console.log(str) ; } 

테스트 웹 페이지 :

<html><head></head> 
<body> 
    <script>alert("this is an alert message") ;</script> 
    nothing to see here... move along. 
</body> 
</html> 

무슨 일 내장 된 스크립트 테스트 페이지를로드 할 때 아무것도가 기록되기 전에 경고가 실행하는 것입니다 console.log.

내 질문 -

  • 실제로 스크립트 시작합니까 호출 얻을?
  • 을 실행할 수있는 방법이 있습니까? 페이지의 스크립트가 있습니까?

이것은 상당히 직설적이어야하지만 지금까지 설명서를 읽거나 검색하거나 실험을 통해 문제를 해결할 수있는 방법을 찾을 수 없었습니다. 나는 다른 누군가가 비슷한 것을 해결하기를 바라고 있습니다.

답변

0
<head> 
    <script> 
    (function() { 
     console.log(window.location.href + "loaded killAlert.js") ; 
     window.alert=function(str) { console.log(str) ; } 
    })(); 
    </script> 
</head> 

익명으로 호출하면 생성 직후 스크립트가 실행됩니다. 희망이 도움이됩니다.

+0

@Holybreath 제안에 감사드립니다. 나는 이미 그것을 시도했었다. 그러나 아무런 이점도 없다는 결론에 도달했다. 스크립트가 호출되고 있지만 페이지 스크립트가 실행 된 후 (OP에서 지적한 것처럼 Apple의 설명서에 위배됩니다). – Xcapee