문제
터치 스크린에서 키오스크 모드로 실행되는 웹 응용 프로그램을 작성하고 있습니다. 나는 현재 Firefox에서 실행하기 위해 그것을 목표로하고 있습니다. 나는 내장 브라우저를 사용하여 그렇게하고 싶습니다. <iframe>
. 임베디드 홈페이지에는 뒤로/전달 버튼이 필요합니다.
나는 iframe의 역사 대상에 액세스 할 수있었습니다.
var w = document.getElementById('embeddedBrowser').contentWindow;
w.history.back();
그만큼 history
내장 된 창의는 부모 창과 동일합니다. 따라서 새로로드 된 경우 <iframe>
, 이 호출은 시스템의 이전 페이지로 돌아갑니다.
이것을 피할 수있는 방법이나 이것을 해결하는 더 정확한 방법이 있습니까?
해결책
각 탭 내에 공유 된 히스토리 객체가 하나만 있기 때문에 불가능 해 보입니다. 그 주위에 올바른 방법은 테스트하는 것입니다 window.history.current
또는 window.history.previous
다시 전화하기 전에. 안타깝게도, window.history.current
특권이 있으므로 서명되지 않은 페이지에는 사용할 수 없습니다.
다음은 지저분한 해결 방법의 대략적인 스케치입니다.
<iframe src="somepage.html" name="myframe"></iframe>
<p><a href="#" id="backBtn">Back</a></p>
<script type="text/javascript">
document.getElementById('backBtn').onclick = function () {
if (window.frames['myframe'].location.hash !== '#stopper') {
window.history.back();
}
// ... else hide the button?
return false; // pop event bubble
};
window.frames['myframe'].onload = function () {
this.location.hash = 'stopper';
};
</script>
물론 이것은 부모의 창에서 (#Hash) 브라우징이 진행되지 않는다고 가정하지만, 백 운동을 제한하는 문제에 효과가있는 것 같습니다.
제휴하지 않습니다 StackOverflow