Ext.History ユーティリティ (バージョン 3.4.0) が IE8+ で正常に動作することに問題があります。Quirks モードでは機能しますが、IE8 標準モード (IE8) または IE9 標準モード (IE9) のドキュメント モードでは機能しません。CSS が適切にレンダリングされていないため、Quirks モードが機能していません。
history ユーティリティ以外のすべてをアプリから取り除き、(extjs ファイル以外に) 2 つのファイルを作成しました。
index.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<script type="text/javascript" src="ext-base.js"></script>
<script type="text/javascript" src="ext-all.js"></script>
<script type="text/javascript" src="myapp.js"></script>
</head>
<body>
<div>
<div align="center">
<table width="97%" border="0" cellpadding="0" cellspacing="0" >
<tr>
<td>
<a href="#link1">Link1</a> |
<a href="#link2">Link2</a> |
<a href="#link3">Link3</a> |
<a href="#link4">Link4</a> |
<a href="#link5">link5</a>
</td>
</tr>
</table>
</div>
</div>
<!-- Fields required for history management -->
<form id="history-form" class="x-hidden">
<input type="hidden" id="x-history-field"/>
<iframe id="x-history-frame"></iframe>
</form>
</body>
</html>
myapp.js:
Ext.ns('MyApp');
Ext.onReady(function()
{
Ext.History.init();
Ext.History.on('change', function(token){}, this);
});
アプリを Web サーバーにロードし、index.html に移動して link1 をクリックすると、アドレス バーに #link1 と表示されます。次に link2 をクリックすると、アドレス バーに #link2 が表示されます。次に link3 をクリックすると、アドレス バーに #link3 と表示されます。
IE7 エミュレーションを使用する IE、Chrome または Firefox で戻るボタンを使用すると、アドレス バーは #link3 から #link2 に移動します。もう一度戻るボタンを押すと、アドレス バーが #link2 から #link1 に移動します。これは私が期待する動作です。
ただし、適切なドキュメント標準モードで IE8 または IE 9 を使用している場合、[戻る] ボタンをもう一度クリックすると、アドレス バーが #link2 から #link3 に戻ります。戻るボタンをさらにクリックすると、#link2 と #link3 の間でユーザーが切り替わるだけです。これは予期しない動作であり、アプリケーションが正常に動作しない原因となっています。
これは、Sencha の例が 3.4.0 で機能する方法であることに注意してください。
(ページは Quirks モードで表示されますが、IE8 標準または IE9 標準に変更すると機能しません)。
4.1 で適切に動作しているように見えます。
(リンクを2つだけ投稿させてください。しかし、おそらく見つけることができます...)
私は Ext 3.4.1 にアクセスできませんが、この問題はバグ修正としてリストされていません。doctype の変更が機能することを示唆する1 つのスレッド ( here ) を見たことがありますが、そうではないようです (すべての doctype を試しました...)。
アプリの多くの部分でナビゲーションに History ユーティリティが使用されているため、これを削除することは受け入れられる解決策ではないことに注意してください。
どうすればこれを機能させることができるかについて、誰かが提案できますか?