Jul*_*anR 5 javascript internet-explorer extjs autoload
使用ExtJS 2.2.1,我有一个容器元素,应该使用以下命令从服务器加载一段HTML:
autoLoad: { url: 'someurl' }
Run Code Online (Sandbox Code Playgroud)
这在Firefox中工作正常,但对于IE7,这会导致在第7170行的ext-all-debug.js中出现语法错误:
this.decode = function(json){
return eval("(" + json + ')');
};
Run Code Online (Sandbox Code Playgroud)
我通过将该函数转换为此来修复此问题:
this.decode = function(json){
return eval('(function(){ return json; })()');
};
Run Code Online (Sandbox Code Playgroud)
然后autoLoad在两个浏览器中都运行良好,但是有一些奇怪的错误,此外,你真的不想在ExtJS库中修复它,因为它将无法维护(特别是在缩小的ext-all.js中,就像是一半单行上的大量Javascript).
我无法找到很多关于这个bug的信息.
我试过的变化:
// With <script> tags around all the HTML
autoLoad: { url: 'someurl', scripts: true }
// With <script> tags around all the HTML
autoLoad: { url: 'someurl', scripts: false }
Run Code Online (Sandbox Code Playgroud)
没有<script>标签,反之亦然.HTML中也没有任何Javascript,但它应该是可能的,因为最终我们将在返回的HTML中使用Javascript.
问题不在HTML中,因为即使使用最简单的HTML,错误也是一样的.
更新 - 对donovan的回应:
使用它的最简单的情况是这一个:
changeRolesForm = new Ext.Panel({
height: 600,
items: [{ autoScroll: true, autoLoad: WMS.Routing.Route("GetRolesList", "User") + '?userID=' + id}]
});
Run Code Online (Sandbox Code Playgroud)
这里没有涉及数据存储区.响应类型text\html也不是json,所以也不能混淆它.如上所述,它在Firefox中工作得很好,而在Firefox中,它也执行相同的eval功能,但没有错误.所以它不像Firefox遵循不同的执行路径,它是相同的,但没有错误eval.
我找到了问题的根源,确实不是ExtJS的问题。应用程序中有一个部分侦听Ext.Ajax“requestcomplete”事件并尝试将 response.responseText 解码为 json,即使响应是 HTML(仅在一两种情况下)。IE对此并不好笑。
| 归档时间: |
|
| 查看次数: |
8726 次 |
| 最近记录: |