2012-06-26 3 views
1

'Pause on exceptions'과 비슷한 방법으로 svg 요소를 만들 때마다 일시 중지 할 수 있습니까?Chrome/Opera의 svg 오류에서 일시 중지 할 수 있습니까

이 예 (test on jsfiddle) :

circle.setAttribute('fill', 'steelblue'); 
circle.setAttribute('r', 'big'); // A 'big' circle is obviously wrong 

크롬에서 다음과 같은 오류가 발생합니다,하지만 오류를 찾기 어려운이 될 수 있도록 매핑 다시 SVG를 생성 한 자바 스크립트 호출이 없다 :

enter image description here

답변

2

이것은 브라우저에서 svg가 어떻게 렌더링 되었기 때문에 불가능합니다. svg가 XML과 비슷하거나 (HTML) 상상해보십시오. 코드 라인과 같은 단계 프로세스에서는 실행되지 않습니다. 객체와 속성을 빠르게 렌더링하는 렌더링 엔진으로 읽어들입니다. 이 일시 중지는 엔진 내부에서 발생해야하며, 이로 인해 모든 종류의 렌더링 문제가 발생합니다.

예를 들어, javascript는 setAttribute 값으로 전달하는 항목에 대해 유형 검사를 수행하지 않습니다. (실제로 다른 속성이 다른 속성을 필요로 할 수는 없기 때문에) 해당 키를 추가합니다. 값 쌍을 요소 객체에 추가합니다. (이전과 이후의 서클 객체를 로깅 해보면 내가 의미하는 것을 볼 수 있습니다). 나중에 DOM에 서클을 추가하면 위에서 설명한 것처럼 객체를 가져 와서 파싱합니다.

기본적으로이 유형의 오류 처리는 브라우저에 존재하지 않습니다. 예를 들어있는 코드가 정확하고 올바르게 실행되기 때문입니다. 그러나 프로그래머가 올바른 값 유형을 전달할 필요가 있으므로 setAttribute 메소드 그래서 자바 스크립트에서 오류가 아니라 그 이유는 거기에 중단 점을 얻을하지 않습니다.

+0

다른 잘못된 DOM 값이 NOT_SUPPORTED_ERROR을 던집니다. 왜 이것이 svg에서도 작동하지 않아야합니까? – Bergi

+0

예를 들어 보셨습니까? – Jlange

1

유형 검사를 수행하는 래퍼를 만들 수 있습니다. 각 요소의 속성에 허용되는 값을 결정하려면 SVG spec을 읽으십시오.

관련 문제