2012-08-02 3 views
0

다음과 같이 html 페이지가로드 된 iframe을 열면 멋지지만 페이지/iframe에 닫기 버튼을 추가하여 iframe/페이지를 닫고 페이지에 영향을주지 않습니다. 그 전혀 도움이된다면js iframe 닫기 버튼

<a href="window.parent.document.getElementById('iframe').parentNode.removeChild(window.parent.document.getElementById('iframe'))">Close</a> 

내가 페이지에 jQuery를 로딩하고 있습니다 : 이상 열 :

(function (d) { 
var modal = document.createElement('iframe'); 
modal.setAttribute('src', 'mypage.html')); 
modal.setAttribute('scrolling', 'no'); 
modal.className = 'modal';document.body.appendChild(modal); 
var c = document.createElement('link'); 
c.type = 'text/css'; 
c.rel = 'stylesheet'; 
c.href = '//myurl.com/testes.css'; 
document.body.appendChild(c); 
}(document)); 

내가 그것을 닫으려고 다음을 시도했지만, 다음은 iframe 내부 (404) 메시지를 제공합니다 , jquery 솔루션이 있다면 의미합니다.

답변

0

링크는 어딘가에 연결되어 있고 href 속성은 URI를 사용합니다.

<button type="button">을 사용하고 클릭 핸들러를 바인딩하십시오.

<a href="someUriWithoutAnIframe" target="_parent">foo</a> 

을 그리고

myLink.addEventListener('click', function (e) { 
    var d = window.parent.document; 
    var frame = d.getElementById('myFrame'); 
    frame.parentNode.removeChild(frame); 
    e.preventDefault(); 
}); 
+1

'href'에'javascript : '접두사를 사용할 수도 있습니다. Click me Hubro

+4

할 수있는 일이 많지만 수행해야 할 작업이 많습니다. 그 중 하나입니다. – Quentin

+0

방금 ​​옵션에 추가했습니다 :-) – Hubro

0

의 라인을 따라 이벤트 처리기를 바인딩 :

을 (당신은 onclick 속성을 사용할 수 있지만 그 unobtrusive을하지 않을 것)이 눈에 거슬리지 접근 방식이 될 것입니다 iframe의 컨테이너 div에 링크를 삽입하여 후자를 다음 구조로 생성 할 수 있습니다.

<div id="iframe-container"> 
    <a href='#' onclick='this.parentNode.parentNode.removeChild(this.parentNode)'>Close</a> 
    <iframe src="http://some.web/page.html" /> 
</div> 

프레임 워크없이 작동합니다.