2011-09-25 4 views
1

동적으로 생성 된 <div>이 있고 이 포함되어 있습니다. 이 닫히고 그 시점에서 <div>이 제거 될 수 있습니다.iframe의 영구 변수?

지금까지 내가 가진 :

var div = document.createElement('div'), ifr = document.createElement('iframe'); 
// some styles and stuff here, including ifr.src 
ifr.contentWindow.container = div; // Note that domains are the same 

// within the iframe's code, possibly a "close" link or after completing an operation 
container.parentNode.removeChild(container); 

의미가 있습니다. 하지만 iframe 내의 페이지가 시작해야하는 페이지 인 경우에만 해당합니다. 다른 페이지로 링크를 클릭하면 window.container이 더 이상 정의되지 않습니다.

나는 창에 영구적 인 데이터를 저장하기 위해 window.name을 사용할 수 있지만 직렬화 할 수있는 데이터로 제한된다는 것을 알고있다. 내 지식으로는 ID를 할당하고 저장하는 것 이외에는 DOM 노드를 직렬화 할 수 없습니다. 이러한 임의의 ID를 피하고 싶습니다. 누구든지 더 나은 솔루션을 제안 할 수 있다면 매우 감사하게 생각합니다.

답변

1

사용이 코드 :

//At the frame: 
var parentFrames = parent.document.getElementsByTagName("iframe"); 
for(var i=parentFrames.length-1; i>=0; i--){ 
    if(parentFrames[i].contentWindow == window) { 
     parentFrames[i].parentNode.removeChild(parentFrames[i]); //Removes frame 
     //Add an extra `.parent` at each side of the expression to remove the `div`. 
     break; 
    } 
} 
+0

아, 네. 나는 이미 다른 곳에서 이런 식으로 코드를 작성했다. 왜 여기에 적용 할 생각이 없는지 모르겠다. D 테스트 해보고 알려 줄 것이다. –

+0

코드를 설명하지 않았습니다. JS에서 프로그래밍 할 때 이미 상당히 익숙하다고 가정했기 때문입니다. 코드의 일부가 명확하지 않은 경우 설명을 요청하십시오. –

+0

작동. 알림을 보내 주셔서 감사합니다. –

0

에로드 된 페이지는 "window.parent"를 사용하여 포함 된 페이지로 이동할 수 있습니다. 따라서 에 "마법"참조를 유지하는 대신 포함 페이지에 보관하고 "하위 페이지"를 찾습니다. 또한

function closeMe() { // inside the iframe page 
    window.parent.frameContainer.removeChild(window.parent.removableFrame); 
    } 

"부모", "창"참조 창 (프레임)의 체인 거기 최상위 상황, 그래서 그냥 한 단계 (이상,의 <iframe>의 "최고"재산 등).

+0

솔루션은 작동하지만'하나의'