다른 누군가의 페이지에서 코드를 실행할 수 있기를 원합니다.iframe이로드 된 후 iframe에서 JavaScript 코드를 실행 하시겠습니까?
document.body.style.backgroundColor = "#AAAAAA";
document.getElementById('targetFrame').contentWindow.targetFunction();
다른 누군가의 페이지에서 코드를 실행할 수 있기를 원합니다.iframe이로드 된 후 iframe에서 JavaScript 코드를 실행 하시겠습니까?
document.body.style.backgroundColor = "#AAAAAA";
document.getElementById('targetFrame').contentWindow.targetFunction();
그것을 다른 사람의 페이지의 경우 :
가로드 한 후 나는 약간은 iframe 페이지의 색상을 변경하고 싶은 말은 수 있습니다 : 여기
쉽게 이해 예입니다. 당신은 평범한 상대방의 협력 없이는 이것을 할 수 없습니다. 자신과 같은 임의의 사람이 다른 개발자가 작성한 응용 프로그램에 대해 임의로 코드를 실행할 수있는 경우 웹 보안에 미치는 영향에 대해 생각해보십시오. 당신이 좋은 성격을 지녔다고 확신하는 동안, 낮은 도덕적 섬유가있는 사람들이 데이터 보안에있어서 큰 문제가되는 곳에 있습니다.그런데이 보안 규칙에는 예외가 있습니다. 하나.
예를 들어, 다른 웹 개발자가 자신의 페이지에서 코드를 실행할 수있는 권한을 부여한 경우 HTML5 window.postMessage API를 사용하여 한 컨텍스트에서 다른 컨텍스트로 메시지를 전달한 다음 해당 메시지가있을 때 명령을 실행할 수 있습니다 수신됩니다.
명확하게하기 위해 다른 개발자가 웹 사이트에서 보낸 이벤트를 청취하기 위해 다른 개발자가 자신의 웹 사이트에 수신기를 등록해야합니다. 동료의 사이트에
코드 :
// register to listen for postMessage events
window.addEventListener("message", changeBackground, false);
// this is the callback handler to process the event
function changeBackground(event)
{
// you're colleage is responsible for making sure only YOU can
// make calls to his/her site!
if (event.origin !== "http://example.org:8080")
return;
// event.data could contain "#AAAAAA" for instance
document.body.style.backgroundColor = event.data;
// do other stuff
}
}
는
귀하의 코드 : iframe이로드가 완료되면이 코드를 실행하기 위해
// pass the string "#AAAAAA" to the iframe page, where the changeBackground
// function will change the color
document.getElementById("theIframe").contentWindow.postMessage("#AAAAAA", targetOrigin);
, 당신은 당연히해야 이를 감지 할 수 있으려면 iframe's load event을 사용하거나 동료가 use postMessage in reverse, to notify you to fire your event. 일 수 있습니다.
자세한 내용은 HTML5 Specification on Web Messaging을 확인하십시오.