Ext.data.ScriptTagProxy在ie6中报参数无效

   最近遇到一个问题,同事开发的一段用于跨域调用的Ext代码在ie6下报错,查看其代码,使用的是Ext.data.ScriptTagProxy这个类的,在测试时是在ie7环境下的,正式环境上用的IE6总是报参数错误,最后发现是由于 html 的 base 标签引起。
   ScriptTagProxy的基本原理是在html的head标签下添加一个 script 标签,然后在script标签的src属性中中写上目标URL,相当于访问了目标URL,然后由目标URL返回一段JS代码用于回调,在回调之前会删除由EXT创建的script标签。问题就在这里,由于我们的页面中在head标签下加了base标签,象这样  <base href="http://localhost:8000/aaa/"> ,这时候在IE6下由EXT添加的script标签竟然是在 base 标签里面,而不是在head里面(当然添加的时候是使用head标签作为父标签来添加的,代码:this.head.appendChild(script);),而EXT在删除的时候还是使用head标签作为父标签去删除(代码:this.head.removeChild(document.getElementById(trans.scriptId));),所以会报参数无效。解决的办法就是把base标签给闭合了,象这样:<base href="http://localhost:8000/aaa/"></base>  ,不能是这样 <base href="http://localhost:8000/aaa/"/>   ,不知道这样闭合标签会不会有影响。

 

 

PS: IE Developer Toolbar 在调试这种问题还是不错的。

你可能感兴趣的:(html,ext,IE)