2014-11-17 3 views
1

웹 페이지 (www.demo.com)가 있고 해당 웹 페이지에 js (javascript1.js, javascript2.js) 파일이 있다고 가정합니다.iframe에있는 js 객체 만들기

이제 다른 웹 페이지 (www.newwebage.com)를 만들고 www.demo.com을 iFrame에로드했습니다.

이제 newwebpage.com의 javascript1.js 및 javascript2.js에서 이러한 메서드를 사용하여 newwebpage.com에 대한 다른 js 파일을 만들지 않도록 직접 해당 메서드를 사용합니다.

"document.getElementById ('yourIFrame') 시도했습니다. contentWindow.yourFunction();" 그러나 그것이 작동하는 것을 발견하지 못했습니다.

+0

두 페이지에 모두로드하고 이러한 방식으로 사용할 수있는 단일 공유 .js 파일을 만듭니다. 이것은이 문제를 해결하는 "올바른"방법입니다. 파일 자체는 브라우저에서 캐시되며 네트워크를 통해 한 번만로드됩니다. 다른 도메인의 iframe에로드 된 .js 파일을 성공적으로 공유하지 못합니다. 브라우저의 보안 설정이 사용자를 차단합니다. – jfriend00

답변

0

당신의 2 개의 웹 사이트가 동일한 근원에서 오지 않기 때문에, 이것을 달성하는 것은 어렵다.

"동일한 출처 정책의 본질은 다음과 같이 공식화 될 수 있습니다. 동일한 프로토콜 : // 도메인 : 포트 또는 곧 동일한 출처의 창인 경우에만 서로의 컨텍스트에서 작동 할 수 있습니다."

http://javascript.info/tutorial/same-origin-security-policy

은 즉 cross-window messaging 해결 방법이 있습니다,하지만 당신은 두 도메인을 관리 할 필요가있다. 본질적으로, 보안 결함으로 간주되므로 적극적으로이를 금지하는 브라우저와 싸울 것입니다.

+0

그리고 도메인과 포트가 동일하다고 가정하십니까? – PJ1405

+0

네, 프로토콜은 브라우저가 iframe 사이의 통신을 허용하는 것과 같아야합니다. –

+0

그건 내 질문입니다. 어떻게해야합니까 ?? 나는이 "document.getElementById ('yourIFrame').을 시도했다. contentWindow.yourFunction();" 하지만 작동하지 않습니다. – PJ1405