브라우저 백은 페이지 자체보다 먼저 중첩된 iframe에 대해 작동합니다. 이를 피할 수 있는 방법이 있습니까?
동적 데이터가 로드된 페이지와 많은 javascript가 있습니다.
페이지에는 사용자가 선택할 수 있는 목록이 포함되어 있으며 선택한 각 값은 새 데이터를 페이지에 로드합니다.
이러한 데이터 항목 중 하나는 iframe에 제공된 URL입니다.
jQuery BBQ: Back Button & Query Library를 사용하여 브라우저 백 동작을 시뮬레이트합니다.
처음 뒤로 버튼을 클릭했을 때 iframe이 이전 위치로 돌아간 후 다시 클릭해야 페이지가 되돌아갈 수 있다는 것 외에는 모두 정상적으로 작동합니다.
iframe의 등 동작을 비활성화하는 방법이 있나요?
다른 사람들에게 도움이 될 수 있을 것 같은 내 문제에 대한 답을 찾았어요.
문제는 새로운 URL을 Iframe에 할당하는 방법에 있었습니다.Jquery를 사용하여 다음과 같이 되어 있었습니다.
$('#myIFrame').attr('src',newUrl);
이러한 방법으로 URL을 할당하면 브라우저의 방문 URL 목록에 새 항목이 추가됩니다.
이는 바람직한 동작이 아니기 때문에 일부 구글에서 Iframe 개체를 '백리스트'에 추가하지 않고 새 URL을 할당할 수 있다는 것을 알게 되면 다음과 같이 나타납니다.
var frame = $('#myIFrame')[0];
frame.contentWindow.location.replace(newUrl);
이렇게 하면 내 뒤로 버튼이 정확히 작동한다.
그나저나, 여기서 답을 얻었어.
이것이 나에게 그랬던 것처럼 당신에게 도움이 되었기를 바랍니다.
IFrame의 크로스 도메인 URL 을 설정하려고 하면, 허가된 회답은 기능하지 않는 것 같습니다.회피책으로서 IFrame을 DOM에서 분리한 후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 내에 하이퍼링크를 만드는 것이 좋습니다.이것을 'Back'이라고 부르고 href를 javascript:history.back(-1)로 하는 것이 최선이라고 생각합니다.
기본적으로 HTML5에 도입된iframe, history.replaceState에 새로운 이력 엔트리가 추가되는 것을 방지해야 합니다.
history.pushState(state, title, url);
부트스트랩모달 내에서 크로스 도메인 iframe을 관리하고 있기 때문에, 나에게 유효한 유일한 솔루션은, 각 iframe 페이지의 선두에 다음의 코드를 넣는 것입니다.
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
};
iframe 콘텐츠를 제어해야 하고 상위 창의 이력 체인을 끊어야 하므로 모든 사용자가 이 방법을 사용할 수 있는 것은 아닙니다.
아니요, 이것은 전적으로 브라우저에 달려 있습니다.
언급URL : https://stackoverflow.com/questions/2245883/browser-back-acts-on-nested-iframe-before-the-page-itself-is-there-a-way-to-av
'code' 카테고리의 다른 글
스프링 부트 유닛 테스트에서 JWT 인증을 모의하는 방법 (0) | 2023.03.04 |
---|---|
봄에 application.properties를 상속하는 방법 (0) | 2023.03.04 |
여러 리의 좌우 부동 (0) | 2023.03.04 |
Wordpress $wpdb-> get_results() 쿼리 (0) | 2023.03.04 |
PL/SQL에서 UPDATE의 영향을 받는 행 수 (0) | 2023.03.04 |