2011-08-25 3 views
1

내 기본 도메인 (example.com)의 하위 도메인 인 내 API 주소 (api.example.com)에 도메인 간 요청을하는 간단하고 가중치있는 방식이 필요합니다.iframe의 DOM을 상위 프레임 (동일한 document.domain)에서 변경할 수 있습니까?

XDR 및 각 사용 된 브라우저와의 비 호환성을 다루는 기술 및 해킹에 대해서는 많이 읽었지만 XDR은 여전히 ​​매우 복잡합니다. easyXDM으로서 완전한/복잡한 솔루션이 필요하지는 않습니다. 구현과 완벽하게 작동했습니다.

그래서 현대 Webkit 및 Gecko 브라우저에서이 문제를 해결 한 'CORS 사용'을 결정했습니다. 그러나 항상 그렇듯이 CORS와 아직 호환되지 않는 IE (이 경우 Opera도 있음)가 있습니다.

jQuery AJAX 메서드를 계속 사용하려면 jQuery 메서드로 XDR을 사용할 수있는 솔루션을 검색했습니다. 그런 다음 benvinegar에 의해 jQuery.ajax() 메서드를 대체하고 따라서 모든 종속 메서드를 대체하는 아주 멋진 솔루션을 구현했습니다. https://gist.github.com/859940. 그의 스크립트는 document.domain/iframe 트릭을 기반으로합니다.

Ben이 제안한 함수를 호출하기 전에 jQuery.support.cors (jQuery 1.6.2 사용)를 사용하여 CORS 지원을 테스트했습니다. 모든 것이 완벽하게 작동합니다.

위의 링크 된 스크립트가 만족스럽지 않은 유일한 점은 api.example.com에서 jQuery 라이브러리를로드해야한다는 것입니다. 원하지 않습니다. 내가 사용하는 하나의 파일에 축소 된 자바 스크립트 라이브러리/플러그인/스크립트를 번들로 만들었습니다. example.com; 그게 날 나에게 2 옵션 (api.example.com의 jQuery 사용) : 전체 번들을 다시로드하거나 캐싱되지 않은 버전의 jQuery 만로드하십시오. 나도 싫어.

내 질문 : 두 프레임의 document.domain이 같을 때 상위 프레임에서 iframe의 DOM을 변경할 수 있습니까? 그렇다면 jQuery를 example.com에서 child-iframe (api.example.com)으로 복제 할 수 있습니까? 방법? 아니면 이것에 대해서 미쳐 가고있는 중이고 더 나은 해결책이 있습니까?

미리 감사드립니다. Leonardo.

+0

을 '안녕하세요'경고 것

<script> window.my_var = 'hi'; function show_var(){ alert(my_var); } </script> 

파일 test2.htm 귀하의 서버에 한 번만 다운로드하여 캐시됩니다. –

+0

메모리 사용량은 어떻습니까? 작은 파일이 아닌 동일한 파일을 두 번로드하면 저장할 수있는 메모리가 사용됩니다. 그것은 모바일 브라우저에서 더욱 중요합니다. – leods92

+0

나는 이것에 대해서만 추측으로 반응 할 수 있었다. 나는 파일이 메모리에 두 번로드되는지 여부에 대해서는 생각해 본 적이 없다고 생각하고 싶습니다. 나는 정보를 온라인으로 둘러 보려고했지만 검색 용어를 제대로 알 수는 없습니다. –

답변

1

파일 test.htm을

<iframe name='my-iframe' src='test2.htm' onload="child();"></iframe> 
<script> 
function child(){ 
    alert(window.frames['my-iframe'].my_var); 
    window.frames['my-iframe'].my_var = 'bye'; 
    window.frames['my-iframe'].show_var(); 
} 
</script> 

두 프레임이 동일한 파일을 참조하는 경우 위의 코드는 다음 '안녕'

+0

고마워요! 내 질문에 대답했다. ** 하위 iframe **에서 속성을 설정할 수 있습니다. 내가 일하고 싶었던 것을 얻는 지 궁금해하는 사람들을 위해 : 나는하지 않았다.지금까지 내가 할 수 있었던 일은 전체 jQuery를 복제하고 자식 iframe에 추가하는 것입니다. 문제는 리소스의 과부하가 계속 발생한다는 것입니다 (전체 프레임 워크에 스크립트 태그를로드하는 것과 마찬가지로). 내가 지금하고있는 일은 iframe에 고유 한 XHR 객체를 생성하고 메인 도메인에서 호출하는 것입니다. 그러나 지금까지 성공하지 못했습니다 ... – leods92

관련 문제