创建 XMLHttp 对象的兼容性问题

2014-02-18 20:03:21 +08:00
 faceair
我们学校教务系统用的是强智的教务系统,系统只能在 ie9- 下工作,在其他浏览器中登陆后会提示不能创建对象。

我今天仔细查看了网页源代码,发现里面创建XMLHttp对象对象时有个条件默认给关闭了,如果打开这个选项(删掉 && 1 == 2 )应该就能兼容其他浏览器。


我本地搭环境测试各种奇怪的问题,而我对javascript也不熟,不是太确定问题所在。
希望各位帮我看下是不是只有这里的问题,如果是的话我就早点向学校报告。

完整代码: https://gist.github.com/faceair/9069660#file-gistfile1-html-L173
3040 次点击
所在节点    问与答
7 条回复
yyfearth
2014-02-18 20:29:54 +08:00
开兼容模式不行么?不行的话用Sandbox做的IE6或者IETester。实在不行就虚拟机咯。
就算你打开了那个部分,其他地方还是IE only,比如selectNodes,要彻底支持非IE浏览器工作量估计不小。
faceair
2014-02-18 20:40:24 +08:00
@yyfearth 好的,谢了。那我想办法重写个首页好了,别的页面还是没有问题。
yimity
2014-02-18 21:01:49 +08:00
嗯,是的,你的想法是对的,把 && 1==2 删掉就可以了。
faceair
2014-02-19 00:53:52 +08:00
@yyfearth 对了,我也不一定是要非ie浏览器。现在的关键是版本比较高的ie就用不了了。

有的ie9可以,有的ie9不能创建对象,原因未知。(
再往上ie11也不能创建对象,您推测原因有哪些?如果需要支持高版本的ie主要需要修改哪些地方?
faceair
2014-02-19 01:27:20 +08:00
@yyfearth 抱歉,之前没有仔细看。我才发现我的浏览器是ie11,我一直以为是ie9…

好了,我刚才一路降级下来的情况,ie11不能创建对象,ie10没有报错但依旧不能加载菜单,ie9正常显示。

我查到的资料:

1.判断if(windows.ActiveXObject)在ie11里面返回false,要用if(windows.ActiveXObject !== undefined),可以解释ie11不能创建对象的问题。

2.自ie10起ie系列就好像修复了document.getElementById方法,所以代码第273行不能获取到值了。兼容的办法是给每个标签加上id和name,添加菜单的时候也要注意同时添加id和name。

您看是这样么?有没有什么遗漏的
yyfearth
2014-02-19 08:21:17 +08:00
@faceair IE11 用兼容模式打不开么?兼容模式那些老IE的API都还是支持的啊 (兼容模式按钮在地址栏的右边)
另外看到JS里面还用了其他IE专用的API,比如document.all,xml.selectNodes 这些都是非标准
faceair
2014-02-19 19:49:10 +08:00
@yyfearth 兼容模式可以打开,但是显示还是有点问题,不过基本可以了。多谢~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/100810

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX