0

IE WebBrowser コントロールを埋め込み、ローカル Web サーバーを実行してコンテンツを提供する Windows アプリがあります。読み込む URL はアプリケーション内でのみ意味があり、アプリケーションの終了後は有効ではありません。ユーザーには表示されません。それらは次のようになります。

http://127.0.0.1:1234/something.html

1234そのセッションのランダムなポート番号です。

しかし、これらの URL は IE ブラウザのアドレス バーの履歴に表示されます。Internet Explorer のアドレス バーに「1」と入力すると、すべての URL を含むドロップダウンが表示されます。それらはそのコンテキストでは役に立ちません。

私の質問は、URL がそのドロップダウンを汚染するのを防ぐにはどうすればよいですか?

もう少し情報:メソッドでwindow.location.href = URLはなくを使用して URL をロードしているため、オプションではありません (とにかく、戻る/進む履歴を参照していると思います)。NavigatenavNoHistory

また、実際に を使用して URL を削除しようとしましたが、うまくいきIUrlHistoryStg::DeleteUrl()ません (成功を返しますが効果はありません)。

4

2 に答える 2

2

私はこれをで動作させましたIUrlHistoryStg::DeleteUrl()-コントロールにURLをロードするように要求した直後に呼び出すと、動作しません。これは、ドキュメントの読み込みが完了するまで、コントロールがURLを履歴に追加しないためだと思います。

IUrlHistoryStg::DeleteUrl()後で呼び出すことで、履歴からURLを削除できます。

でも、そもそも彼らがそこにたどり着かなかったほうがいいのですが。

于 2009-04-30T13:47:16.607 に答える
0

私の最初の答えは、あなたが望んでいたものとは正反対でした。

私はあなたが経験していることを再現することはできませんが、ブラウザコントロールを使用していません。

スクリプトをhtmlまたは非表示のframe/iframeに追加して呼び出しをラップし、ブラウザーがラッパースクリプトで実行するようにします。

スクリプトベースのナビゲートは履歴を入力しないでください。IEをハックして、元の回答のclick()イベントトリガーを使用して実際に履歴アイテムを追加する方法を考え出すのに時間がかかりました。

<script>
    function GoTo(url) {
        location = url;
    }
</script>
于 2009-04-30T11:36:51.647 に答える