알립니다

스크립트 가로채기

참고하신 FoxGame그리스몽키와 같은 확장들은 DOMContentLoaded 이벤트를 이용하죠. 이 이벤트는 DOM이 만들어졌을 때 발생되는데, 이 시점이 onload 함수가 호출된 후일 겁니다(아니더라도 onload를 가로챌 시간이 없을 겁니다). 제가 알기론 자신만의 프로토콜을 만들지 않는 이상 소스를 고칠 수 있는 방법이 없습니다.

두 세달 전에 한글 모질라 포럼에 자신만만하게 적었던 답변이다. 이제 와서 보니 잘못 알고 있던 게 있었는데, 먼저 DOMContentLoaded 이벤트는 DOM이 만들어지자마자 발생하기 때문에 load 이벤트 보다는 한참 앞에 발생하고(참고), 외부 스크립트의 경우는 가로챌 수도 있다는 거다.

평소 NoScript로 스크립트를 막아두고 몇몇 사이트만 허용해서 쓰고 있는데 구글 애널리틱을 쓰는 사이트가 늘어나면서 오류를 내며 스크립트의 실행이 멈추고 페이지 로딩이 끝나지 않는 문제가 이따금 일어나서 귀찮게 하는 바람에 고민하다 알게 됐다.

NoScript 및 ABP 는 물론 파이어폭스도 그림을 차단하는 데 nsIContentPolicy 인터페이스를 쓰는데, 이걸로 특정 스크립트를 거부하고 대신에 다른 스크립트나 코드로 바꿔치기하는 게 가능할 거라는 생각이 들었다.

다음은 nsIContentPolicy를 구현한 XPCOM 컴포넌트의 일부분으로써 몇 가지 시도해 본 것들이고, 의도했던 바를 이룰 방법도 찾아냈다.

그리고 간단하게 확장기능으로 만들었다. 그리스몽키와 같은 인터페이스도 없고, 달랑 XPCOM 컴포넌트 하나만 있는 거다(요즘 userChrome.js에 푹빠져있다 보니 불필요한 UI 같은 건 필요가 없다). userChrome.js 같은 걸로 이 확장기능을 쓰려면 다음과 같이 하면 된다.

◀ 이전 : [1] : [2] : [3] : [4] : [5] : [6] : ... [51] : 다음 ▶

달력

«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

최근에 달린 댓글

최근에 받은 트랙백

통계