ExtJS 2.2.1を使用して、以下を使用してサーバーからHTMLの一部をロードすることになっているコンテナー要素を取得しました。
autoLoad: { url: 'someurl' }
これはFirefoxで正常に機能しますが、IE7の場合、ext-all-debug.jsの7170行で構文エラーが発生します。
this.decode = function(json){
return eval("(" + json + ')');
};
私はその関数をこれに変えることによってこれを修正しました:
this.decode = function(json){
return eval('(function(){ return json; })()');
};
次に、autoLoadは両方のブラウザーで正常に機能しますが、いくつかの奇妙なバグがあり、さらに、ExtJSライブラリでこれを修正する必要はありません(特に、半分のような縮小されたext-all.jsでは)。 1行にJavascriptのメガバイ)。
私はこのバグについて多くを見つけることができませんでした。
私が試したバリエーション:
// With <script> tags around all the HTML
autoLoad: { url: 'someurl', scripts: true }
// With <script> tags around all the HTML
autoLoad: { url: 'someurl', scripts: false }
<script>
タグなしでその逆。HTMLにもJavascriptはありませんが、最終的には返されたHTML内でJavascriptを使用するため、可能であるはずです。
可能な限り単純なHTMLでもエラーは同じであるため、問題はHTMLにはありません。
更新-ドノバンへの応答:
これが使用される最も単純なケースはこれです:
changeRolesForm = new Ext.Panel({
height: 600,
items: [{ autoScroll: true, autoLoad: WMS.Routing.Route("GetRolesList", "User") + '?userID=' + id}]
});
ここにはデータストアは含まれていません。応答タイプもtext\html
jsonではなく、であるため、混乱することもありません。そして、前述のように、Firefoxでも問題なく動作し、Firefoxでも同じeval
機能を実行しますが、エラーは発生しません。したがって、Firefoxが別の実行パスをたどるわけではなく、同じですが、のエラーはありませんeval
。