문제

터치 스크린에서 키오스크 모드로 실행되는 웹 응용 프로그램을 작성하고 있습니다. 나는 현재 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) 브라우징이 진행되지 않는다고 가정하지만, 백 운동을 제한하는 문제에 효과가있는 것 같습니다.

다른 팁

당신은보고 싶을 수도 있습니다 Adobe Air. 동일한 도구 / 언어 (Ajax, HTML 등)를 사용하여 응용 프로그램을 작성할 수 있지만 웹 브라우저가 아닌 데스크탑 앱으로 실행되므로 브라우저 프레임을 포함시키는 것과 같은 물건을 더 많이 제어 할 수 있습니다. 그들이 무엇을하고 있는지, 어떤 URL에 갈 것인지, 역사를 통제하는 것 등을 정확히 알 수 있습니다. 이봐 시작에 대한 몇 가지 포인터.

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