IE Webbrowser Control : URL이 IE 주소 BAR URL 이력으로 들어가는 방지
-
03-07-2019 - |
문제
IE Webbrowser 컨트롤을 포함시키는 Windows 앱이 있으며 컨텐츠를 제공하기 위해 로컬 웹 서버를 실행합니다. 로드 한 URL은 응용 프로그램 내에서만 의미가 있으며 응용 프로그램 종료 후에는 유효하지 않습니다. 그들은 결코 사용자에게 보이지 않습니다. 그들은 다음과 같이 보입니다.
http://127.0.0.1:1234/something.html
어디 1234
해당 세션의 임의 포트 번호입니다.
그러나이 URL은 IE 브라우저의 주소 막대 이력이 나타납니다. 인터넷 익스플로러의 주소 표시 줄에 "1"을 입력하면 모든 URL과 함께 드롭 다운이 나타납니다. 그들은 그 맥락에서 쓸모가 없습니다.
그래서 내 질문은 : 내 URL이 해당 드롭 다운 오염을 방지하는 방법은 무엇입니까?
조금 더 많은 정보 : 사용 사용 URL을로드하고 있습니다. window.location.href = URL
, Navigate
방법 navNoHistory
옵션이 아닙니다 (그리고 어쨌든 뒷면/전방 기록을 말합니다).
또한 사실을 사용한 후 URL을 삭제하려고 시도했습니다. IUrlHistoryStg::DeleteUrl()
, 그러나 효과가 없지만 (성공을 반환하지만 효과가 없습니다) - 해당 작업에 대한 팁은 감사하게받을 것입니다.
해결책
이제이 작업을 수행했습니다 IUrlHistoryStg::DeleteUrl()
- 컨트롤에 URL을로드하도록 요청한 직후에 전화하면 작동하지 않습니다. 컨트롤이 문서로드가 완료 될 때까지 컨트롤이 히스토리에 URL을 추가하지 않기 때문입니다.
전화로 IUrlHistoryStg::DeleteUrl()
나중에, 나는 역사에서 URL을 제거 할 수 있습니다.
나는 여전히 그들이 처음에 거기에 도착하지 않았다.
다른 팁
나의 원래 대답은 당신이 원하는 것과 정반대였습니다.
나는 당신이 겪고있는 것을 복제 할 수 없지만 브라우저 컨트롤을 사용하지 않습니다.
HTML 또는 숨겨진 프레임/iframe에 스크립트를 추가하고 호출을 래퍼하여 브라우저가 래퍼 스크립트에서 실행합니다.
스크립트 기반 Navigates는 역사에 들어가서는 안되며, 원래 답변에서 Click () 이벤트 트리거를 사용하여 실제로 기록 항목을 추가 할 수있는 방법을 제시하는 데 시간이 걸렸습니다.
<script>
function GoTo(url) {
location = url;
}
</script>