(最終相対パスtest.htm:)というサブディレクトリに移動した後、バグを確認できます(最初はあなたが何を求めているのか誤解していました)。グーグルすると、それがバグであるか、少なくともタグの非標準実装であることが確認されます(これは、仕様に従って実装に従わないMicrosoftのさらに別のケースである可能性があります)。testtest/test.htm<base>
IEは<base>、定義されたアンカーのタグを尊重します。
<a href="test/test.html">Click me</span>
http://www.site.com/test/test.html(タグが閉じられてい<base>ないか、古いバージョンのIEの場合は自己閉じられていない場合)に移動しますが、IE(すべてのバージョン)は、JavaScriptではなく、アンカーのベースタグのみを尊重します。
IEtest/がURLに追加を追加する理由は、実際には標準に準拠した動作です。<base>IEはタグを無視しているため、のリンクは、現在のディレクトリ()に関連するファイルでtest/test.html呼び出されるサブディレクトリがあり、IEが正しく `test / test /test.html'に移動することを示します。testtest.htmltest
それを修正する方法に関しては...
- タグを削除しても
<base>効果はありません。
onclickを正しいベースURLを返す関数に変更すると機能しますが、これは受け入れられないと述べています。
window.location.hrefは文字列であり、関数ではないため、「オーバーライド」は非スターターです。
onclick絶対URLを使用するように変更することもできます。
- すべての埋め込み属性を削除し、JavaScript(または)
onclickを介してそれらを割り当てると、長期的にはより効果的であり(コンテンツ/動作の分離)、正しいベースURL(およびおそらく選択する方法)を簡単に添付できるようになります。あなたの特定の状況を知っています)。attachEventaddEventListener
- jQuery / Dojo / PrototypeなどのDOM操作ライブラリを使用して、任意の
onclick属性をループし、URLを絶対URLに更新できます。