Rev. 2.73

얼마전 구글에서 배포한 크롬 브라우저를 테스트 해보았습니다. 엘리먼트 드로잉 속도는 정말 쾌적하더군요. 하지만 매우 심각한 오류가 유발 될 소지가 있어 이를 해결하고자 제가 처한 환경에서 여러가지 삽질을 해봅니다. 우선 조취해야 한 것은, navigator.userAgent 정보가 AppleWebKit(사파리)과 거의 흡사하여 사파리에 대한 예외처리로 집입할 우려가 있어 아래와 같은 코드를 추가했습니다.

크롬 브라우저 및 사파리 브라우저 발견 스크립트 추가 및 오버라이딩 :

Prototype.Browser.Chrome = !!navigator.userAgent.match('Chrome');
Prototype.Browser.WebKit = !Prototype.Browser.Chrome && Prototype.Browser.WebKit;

위와 같은 조치만으로 다수의 오류를 잡을 수 있었습니다. 특히 LazyLoader와 같은 동적 자바스크립트 호출을 사용한다면 무한 루프로 진입하게 되는 현상을 방지할 수 있습니다. 두번째 문제로는 크롬 브라우저가 특정 사이트에 처음 액세스 하는 경우(케시되기 전)에는 정상적으로 작동합니다만, 케시되고 난 후에 Prorotype이 먹통이되는 사태가 발생합니다.

chrome.jpg
정상적인 초기화
chrome-error.jpg
초기화 오류
typeof Element.prototype.setStyle; // "undefined"
typeof HTMLElement.prototype.setStyle; // "undefined"
typeof HTMLDivElement.prototype.setStyle; // "undefined"
typeof document.createElement('div').setStyle; // "function"

한참동안 꼼수를 부려봤지만, 답은 안나오고 하는 수 없이 브라우저 이슈로 넘겼습니다.(콘솔창만 열면 오류가 발생하는 것으로 보입니다.) 구글이 자바스크립트가 통용되는 버전을 만들어 줄 것이라 믿어 의심치 않습니다.

Comments