2012-05-20 3 views

답변

3

그것을 다른 사람의 페이지의 경우 :

가로드 한 후 나는 약간은 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을 확인하십시오.