문제

나는 Google 호스팅에서 Dojo를 로드하기 위해 다음 HTML을 사용하고 있습니다.

<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">google.load("dojo", "1.1.1");</script>
<script type="text/javascript">
dojo.require("dojox.gfx");
...

dojox.gfx와 같은 오류가 있는 requre 줄에서 이 오류가 정의되지 않았습니다.이 작업을 수행할 수 있는 방법이 있나요? 아니면 Google에서 dojox 확장 프로그램을 지원하지 않나요?

또는 표준 도장 릴리스에 사용할 수 있는 또 다른 공통 호스트가 있습니까?

도움이 되었습니까?

해결책

<script> 태그에서 직접 .js 파일을 참조할 때와는 다릅니다(Google js API도 이를 지원합니다. 여기), google.load는 동기식이 아닙니다.이는 코드가 google.load에 도달하면 dojo가 완전히 로드되어 구문 분석을 계속할 때까지 기다리지 않음을 의미합니다.dojo.require 라인으로 바로 이동하고 거기에서 실패할 것입니다. 도장 객체는 정의되지 않습니다.

해결책(직접 <script> 태그를 사용하지 않으려는 경우)은 dojo를 참조하는 모든 코드를 시작 다음을 수행하여 함수를 콜백으로 설정합니다.

google.load("dojo", "1.1.1", {callback: start});

function start() {
    dojo.require("dojox.gfx");
    ...
}

또는

google.setOnLoadCallback(start);
google.load("dojo", "1.1.1");

function start() {
    dojo.require("dojox.gfx");
    ...
}

다른 팁

더 나은 질문은 - 왜 그렇게 하시겠습니까?로컬 호스트에서 개발하는 경우에는 상대 경로를 사용하고, 인터넷에 연결된 서버에서 개발하는 경우에는 해당 서버에 dojo 파일을 보관하세요.

또한 - 당신이 파울에 빠지지 않는지 확인하십시오 동일 원산지 정책

나는 google이 가져온 라이브러리의 네임스페이스가 된다고 믿습니다.노력하다: google.dojo.require.

오!아래에서 지적한 것처럼 함수를 직접 호출하는 대신 google.setOnLoadCallback을 사용하는 것을 잊지 마세요.

dojox는 실질적으로 유지 관리되지 않으며 dojo-2에서 제거됩니다.Dojox의 대부분의 위젯에는 심각한 문제가 있으며 좋은 점은 몇 가지뿐입니다.

IMHO dojo는 항상 덮어써야 할 사항이 있기 때문에 자체 호스팅되어야 합니다. 예를 들어 이 dojox.gfx에서 일부 수정이 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top