2011-04-29 5 views
4

작동하려면 1 시간 이상 지난 후 크로스 도메인 정책으로 인한 것일 수 있지만 실제로는 효과가 있다고 생각합니다. 나는 그것에 관한 많은 정보도 찾을 수 없다. 그러나 여기에 내 문제가있다. 나는 http://mysite.com라고 불리는 사이트를 가지고 있는데, 제 3 자 스크립트 (어떤 글을 쓰는 것인가)와 그것의 http://supercoolsite.com/api/script.js에이 스크립트는 동적으로 구글 맵스 API를로드해야합니다. http://maps.google.com/maps/api/js?sensor=false 실행하기 전에.자바 스크립트로 자바 스크립트를 동적으로로드하십시오.

function loadScript(filename,callback){ 
    var fileref=document.createElement('script'); 
    fileref.setAttribute("type","text/javascript"); 
    fileref.setAttribute("src", filename); 
    fileref.onload = callback(); 
    if (typeof fileref!="undefined"){ 
    document.getElementsByTagName("head")[0].appendChild(fileref) 
    } 
} 

loadScript('http://maps.google.com/maps/api/js?sensor=false',function(){ 
    console.log('done loading'); 
    init(); 
}); 

을하지만 내 콘솔 내 대답은 다음과 같습니다 : 글쎄, 난이 코드가 작동 것이라고 생각

api.js:408 done loading 
api.js:115 test 
api.js:310 Uncaught ReferenceError: google is not defined 

은 "test"는 init()의 상단에 있습니다. 그래서, 그것은 스크립트를로드하고 있지만 그것을 실행하지 않는 것 같습니다. 그래서, 어떤 아이디어? 그것은 크로스 사이트 스크립팅 문제가 있다면 내가 생각할 수있는이 유일한 해결 방법은 PHP 스크립트를 기본적으로 그냥 텍스트/자바 스크립트 헤더에 헤더를 설정하고 다음 echo file_get_contents()googlemaps.php 우리가 호스트 파일에 PHP 스크립트가 발생했습니다. 가능하면 순수한 JS로 그것을 할 수있는 방법이 최고 일 것입니다.

P. 또한 다음, jQuery를 추가 getScript()을하고, 그리고 그것은 여전히 ​​didnt 한 작업을 시도

- UPDATE -

이 바이올린 참조 : http://jsfiddle.net/ycMCa/2/

당신은 당신이 당신의 콘솔에서 오류가 있음을 볼 수 있습니다를 : Uncaught TypeError: undefined is not a function

google 변수가 전역 변수 임에도 불구하고.

fileref.onload = callback(); 

fileref.onload에 자사의 반환 값을 즉시 callback를 호출하고 할당합니다 :

답변

7

당신은 사소한 오류가 있습니다.

그것은 당신이 (다만 경우) 소스를 설정하기 전에

fileref.onload = callback; 

당신은 또한 처리기를 추가해야해야한다.

DEMO

관련 문제