2009-04-30 4 views
0

IE WebBrowser 컨트롤을 포함하는 Windows 응용 프로그램이 있으며 콘텐츠를 제공하기 위해 로컬 웹 서버를 실행합니다. 로드하는 URL은 애플리케이션 내에서만 의미가 있으며 애플리케이션이 종료 된 후에는 유효하지 않습니다. 그들은 사용자에게 보이지 않습니다. 그들은 다음과 같이 : 1234는 해당 세션에 대한 임의의 포트 번호입니다IE WebBrowser 컨트롤 : IE 주소창에 들어오는 URL 금지 URL 기록

http://127.0.0.1:1234/something.html 

.

그러나 이러한 URL은 Internet Explorer의 주소 표시 줄 기록에 나타납니다. Internet Explorer의 주소 표시 줄에 "1"을 입력하면 내 URL이 모두있는 드롭 다운이 나타납니다. 그 맥락에서 그들은 쓸모가 없습니다.

제 질문은 다음과 같습니다. 해당 URL을 오염시키는 URL을 어떻게 방지합니까?

조금 더 정보 : 나는 오히려 Navigate 방법을 통해보다 window.location.href = URL를 사용하여 URL을로드, 그래서 navNoHistory를 선택할 수 없습니다 (그리고 나는 어쨌든 그 뒤로/앞으로 역사를 말한다 생각한다).

사실 IUrlHistoryStg::DeleteUrl()을 사용하여 URL을 삭제하려고 시도했지만 작동하지 않습니다 (효과는 있지만 효과가 없습니다). 제대로 작동하는 데 도움이되는 정보를 보내 주시면 감사하겠습니다.

답변

2

- 당신은 URL을로드 제어 요청 후 즉시 호출하는 경우, 그것은 작동하지 않습니다. 그것은 컨트롤이 문서로드를 마칠 때까지 URL을 기록에 추가하지 않기 때문입니다.

나중에 IUrlHistoryStg::DeleteUrl()을 호출하면 기록에서 URL을 제거 할 수 있습니다.

나는 아직도 그들은 처음에는 거기에 가지 않았다.

0

내 원래 대답은 당신이 원하는 것과 정반대였습니다.

내가 겪고있는 것을 복제 할 수는 없지만 브라우저 컨트롤을 사용하고 있지 않습니다.

HTML 또는 숨겨진 프레임/iframe에 스크립트를 추가하고 브라우저에서 래퍼 스크립트로 호출하도록 호출을 시도합니다.

스크립트 기반 탐색은 기록을 입력해서는 안되며, 원래 해답에서 click() 이벤트 트리거로 기록 항목을 실제로 추가하기 위해 IE를 해킹하는 방법이 필요했습니다. 지금 IUrlHistoryStg::DeleteUrl()와 함께이 일을했습니다

<script> 
    function GoTo(url) { 
     location = url; 
    } 
</script> 
+0

** 링크의 ** 화면 표시 ** 방지 - 즉 글꼴 변경의 도덕적 동일성 -이 기록에 추가되지 못하게한다는 것을 의미합니까? 너무 이상 해요! –

+0

사실, 나는이 질문의 정확한 반대의 경우에만 이것을 기억했다. 나는 IE 역사를 스크립트로 IE 역사에 표시하는 데 실제로 문제가 있었지만 기억할 수 있으면 코드를 수정하려고 노력할 것입니다. 보안 데모는 사용자의 지식없이 비밀리에 url을 다운로드하고 모든 추적 정보 IE 기록, ISP 및 서버 로그를 입력하여 효과적으로 "프레임"합니다. 예를 들어/admin/디렉토리에 대한 무단 액세스. –

+0

좋아요, 실제로 그런 일종의 릴리프입니다. :) –