브라우저 뒷면은 페이지 자체 앞에서 중첩 된 iframe에서 행동합니다. 피할 수있는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/2245883

문제

일부 Ajax와 많은 JavaScript에 의해 동적 데이터를로드 한 페이지가 있습니다.

페이지에는 사용자가 선택할 수있는 목록이 포함되어 있으며 선택한 각 값은 새 데이터를 페이지에로드합니다.

이러한 데이터 항목 중 하나는 iframe에 제공된 URL입니다.

나는 사용한다 jQuery BBQ : 뒤로 버튼 및 쿼리 라이브러리 브라우저백 동작을 시뮬레이션합니다.

처음으로 뒤로 버튼을 클릭하면 iframe이 이전 위치로 돌아가서 다시 클릭하여 페이지가 돌아가도록해야한다는 사실 외에도 모두 작동합니다.

iframe의 뒷면 행동을 비활성화하는 방법이 있습니까?

도움이 되었습니까?

해결책

내 문제에 대한 답이 다른 사람들에게 유용 할 수 있다고 생각했습니다.

문제는 iframe에 새로운 URL을 할당하는 방식에 문제가 있었는데 jQuery를 사용하여 다음과 같은 것을 보았습니다.

$('#myIFrame').attr('src',newUrl);

이러한 방식으로 URL을 할당 할 때 브라우저의 방문 된 URL 목록에 새 항목이 추가되어 돌아갑니다.
그것은 원하는 동작이 아니 었으므로 인터넷 검색 후에 '백리스트'에 추가하지 않고 iframe 객체에 새 URL을 할당 할 수 있음을 알았습니다.

var frame = $('#myIFrame')[0];  
frame.contentWindow.location.replace(newUrl);

이렇게하면 내 뒤로 버튼이 예상대로 작동합니다.

BTW, 나는 내 대답을 받았다 여기.

이것이 나에게 도움이 되었기를 바랍니다.

다른 팁

Iframe에 대한 크로스 도메인 URL을 설정하려고하면 허용 된 답변이 작동하지 않는 것 같습니다. 해결 방법으로, 나는 설정하기 전에 Dom에서 iframe을 분리했습니다. src (jQuery 사용).

// remove IFrame from DOM before setting source, 
// to prevent adding entries to browser history
var newUrl = 'http://www.example.com';
var iFrame = $('#myIFrame');
var iFrameParent = iFrame.parent();

iFrame.remove();
iFrame.attr('src', newUrl);
iFrameParent.append(iFrame);

iframe 내에 하이퍼 링크를 만들 것을 제안합니다. 그것을 '백'이라고 부르고 href를 javaScript : history.back (-1)로 넣을 수있는 최선입니다.

기본적으로 Iframe에 새로운 역사 항목이 추가되지 않아야합니다. 역사. 간과 HTML5에 도입 된 것은 대부분의 경우 작동합니다.

history.pushState(state, title, url);

아니요, 이것은 전적으로 브라우저에 달려 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top