2009-04-30 19 views
0

私はIE WebBrowserコントロールを組み込んだWindowsアプリケーションを持っており、コンテンツを提供するためにローカルWebサーバーを実行しています。ロードするURLはアプリケーション内でのみ意味があり、アプリケーションが終了すると有効ではありません。それらはユーザーには見えません。 1234は、そのセッションのランダムなポート番号であるIE WebBrowserコントロール:IEのアドレスバーにURLが移動しないようにするURL履歴

http://127.0.0.1:1234/something.html 

:彼らはこのようになります。

しかし、これらのURLはIEブラウザのアドレスバーの履歴に表示されます。Internet Explorerのアドレスバーに「1」を入力すると、そのURLにすべてのURLが表示されたドロップダウンが表示されます。その文脈では無用です。

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

もう少し情報:私はむしろNavigate方法を経由するよりも、window.location.href = URLを使用してURLをロードしていますので、navNoHistoryはオプションではありません(と私はとにかくそれは戻る/進む履歴を参照思います)。

私はまた、IUrlHistoryStg::DeleteUrl()を使って事実の後にURLを削除しようとしましたが、うまくいきません(効果は戻りますが効果はありません)。

答えて

2

私は今IUrlHistoryStg::DeleteUrl()で、この作品を作りました - あなたはすぐにURLをロードするように制御を求めた後、それを呼び出す場合、それは動作しません。私はそれがドキュメントの読み込みが終了するまで、コントロールがURLを履歴に追加しないためです。

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

私はまだ彼らが最初にそこに着くことはなかったと思います。

0

私の元の答えは、あなたが望むものとまったく逆でした。

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

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

スクリプトベースのナビゲーションは履歴を入力すべきではありません。実際にはIEをハックして、実際に履歴項目を追加して元の回答からclick()イベントトリガーを追加する方法がありました。

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

リンクの**画面上の表示**を防止することは、つまり、フォントを変更するという道徳上の同等性を妨げて、履歴に追加されないようにすることを意味しますか?それはあまりにも奇妙です! –

+0

実際には、私はちょうど質問の正確な逆のためにこれを覚えていた。私は実際にIEの歴史をスクリプトでIE履歴に表示させることに問題がありました。私が覚えていれば、コードを修正しようとします。セキュリティデモでは、ユーザーの知識なしに秘密裏にurlをダウンロードし、すべてのトレースインフォメーションIEの履歴、ISPおよびサーバーログを入力することで、ユーザーを効果的に「フレーミング」します。例えば、/ admin /ディレクトリへの不正アクセス。 –

+0

OK、それは実際には救済の一種です:) –

関連する問題