2012-12-06 4 views
1

저는 Raphael SVG/VML 라이브러리를 사용하여 Firefox 3.0 이상을 지원한다고 말했습니다.Firefox 3.0.12의 Raphael JS 문제

그러나 Raphael 및 jQuery 1.8.3의 최신 버전을 사용하는 중에 문제가 발생했습니다.

나는 그때 시도하고이 RECT에 대한 경계 상자를 얻을 때 문제가 발생합니다 예를 var rect1 = paper.rect(0,0,100,100);

를 들어, 종이 var paper = Raphael('divID',500,500);를 생성하고,이 종이에 모양을 만들 수 있어요. 콘솔에서 나는 이된다. 조인은 함수가 아니다.

나는 또한 경로를 생성하는 동안 같은 문제를 겪는다.

getBBox 함수 또는 pathToString 함수에 문제가있는 것 같습니다. 누구든지이 문제를 겪었습니까? 그리고 누구든지 문제를 해결하기 위해 무엇을 바꿀 수 있는지 알고 있습니까?

편집 : 내가 특별히 3.0.12에 대해 묻는 이유는 내 고객이 불행히도 해당 브라우저를 실행하는 것 외에는 선택의 여지가 없다는 것입니다.

답변

1

문제는 내부에 Raphael 라이브러리의 clone 기능입니다. 이 함수는 이전 버전의 Firefox에서는 함수를 제대로 복제하지 않습니다.

function clone(obj) { 
    if (Object(obj) !== obj || typeof obj === 'function') { 
     return obj; 
    } 
    var res = new obj.constructor; 
    for (var key in obj) if (obj[has](key)) { 
     res[key] = clone(obj[key]); 
    } 
    return res; 
} 

I : 솔루션 중 하나는 (그냥 간단한 자바 스크립트 종류의 일처럼)

그래서, 라파엘의 clone 기능에 대한 최종 코드는 다음과 같이됩니다 그들을 복제하지 않고 기능을 반환하는 코드를 수정하는 것입니다 이게 아무것도 깨지 않았 으면 좋겠어.

+0

흠 나는 복제 방법을 보았지만 솔직히 말해서 다른 밤에 내가 문제가되는 것을 알아 내려고 시도하는 대신 다리에서 뛰어 내릴 준비가되어 있었다. 나는 이것을 시험해보고 다시보고 할 것이다. :) –

+0

실제로 문제를 해결하는 것으로 보입니다. 답변을 수락했지만 결과적으로 문제가 발생하면 알려드립니다. 그러나 크롬과 파이어 폭스 및 IE에서 수정 된 복제 방법으로 문제없이 실행되는 다소 복잡한 예제가 있습니다. –

+0

JavaScript 내부 기능의 특성으로 인해 문제가 발생하지 않을 것이라고 생각합니다. 범위와 'this'에 문제가 없어야합니다. 행운을 빌어 요. BTW, 어쩌면 오래된 Raphael 버전에는 그런 문제가 없습니다 ... – Inferpse