[javascript] iframe을 다시로드 / 새로 고치는 가장 좋은 방법은 무엇입니까?

<iframe>JavaScript를 사용하여 다시로드하고 싶습니다 . 지금까지 내가 찾은 가장 좋은 방법은 iframe의 src속성 자체 로 설정 되었지만 매우 깨끗하지는 않습니다. 어떤 아이디어?



답변

document.getElementById('some_frame_id').contentWindow.location.reload();

Firefox에서는 window.frames[]id로 색인 할 수 없지만 이름 또는 색인으로 색인을 생성해야합니다.


답변

document.getElementById('iframeid').src = document.getElementById('iframeid').src

iframe도메인 전체 에서을 다시로드 합니다! IE7 / 8, Firefox 및 Chrome에서 테스트되었습니다.


답변

jQuery를 사용하는 경우 작동하는 것 같습니다.

$('#your_iframe').attr('src', $('#your_iframe').attr('src'));

나는 그것이 스택 오버 플로우에 너무 추악하지 않기를 바랍니다.


답변

빈 공간을 추가하면 iFrame이 자동으로 다시로드됩니다.

document.getElementById('id').src += '';


답변

window.frames['frameNameOrIndex'].location.reload();


답변

때문에의 동일 출처 정책 다른 도메인에 iframe을 가리키는 수정할 때,이 작동하지 않습니다. 최신 브라우저를 타겟팅 할 수 있으면 HTML5의 문서 간 메시징 사용을 고려하십시오 . 이 기능을 지원하는 브라우저는 http://caniuse.com/#feat=x-doc-messaging 에서 볼 수 있습니다 .

HTML5 기능을 사용할 수없는 경우 http://softwareas.com/cross-domain-communication-with-iframes에 설명 된 트릭을 따를 수 있습니다 . 해당 블로그 항목은 문제를 정의하는데도 효과적입니다.


답변

방금 크롬 에서이 문제를 해결했으며 iframe을 제거하고 교체하는 것이 유일한 방법이었습니다. 예:

$(".iframe_wrapper").find("iframe").remove();
var iframe = $('<iframe src="' + src + '" frameborder="0"></iframe>');
$.find(".iframe_wrapper").append(iframe);

꽤 간단하고 다른 답변에서는 다루지 않습니다.