今天给一个老的jsp项目,改流程图出不来的问题,流程图用的什么框架不太清楚,是一个js文件,文件最后生成各种<v:oval> <v:roundrect> <v:shadow>等标签。
浏览器:电脑自带IE浏览器,IE9
使用语言:jsp,js
问题:报错取不到groupClass的属性
备注:后端开发同事反映,最近改了点东西提交后就不生效了,之前生效的
解决:
1. 网上查同类报错,但是不知道从何查起,就查的IE8兼容,找有可能是什么原因,找了4、5条,失败
2. 研究流程图js文件,以及流程图那页jsp,发现style标签中写了这么一句:
v\:* {behavior: url(#default#VML)}
网上查了下,behavior是CSS1的属性。嗯…… 来继续,behavior是用来 设置或检索对象的DHTML行为。CSS1就不吐槽了,
DHTML…… 也就是动态HTML,度娘上查了查,总之反正是比较抽象的。这句话的意思就是,v标签的样式,都要调用浏览器自带
的VML的样式。而这个 v\: 的写法,也只有IE上能认同。
3. 这样就有了个方向,应该是IE的模式设置的有问题,网上查了查,v\: 只有IE5-IE7能识别,于是按查到的将meta标签改成如下:
原:
<meta http-equiv="X-UA-Compatible" content="IE=8,9" />
改为:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
嗯……出来了开始节点,以及每个节点上的字。???
还有哪里操作有问题咩?IE的缓存也清了,看了DOM,已经修改了,但还是这个鬼样子?
不死心,网上继续找,找到一条,说是要把js文件里所有用setAttribute和getAttribute改为直接用 . 调用的,我看了下js文件,
嗯……有点大的一个工程,而且这个js是项目流程中共用的js文件,改这个有点作死啊。
4. 思索再三,改!改完再看出来没有。半个小时过去后……终于改完了,到IE里面 ctrl+shift+del ,清除所有缓存,ctrl+F5,做乜
啊!没有用竟然!!!
5. 这是我能想到的再下一个办法了,后面还有很多别的项目的任务,领导在催了,为了效率,请大佬出场吧,大佬过来后给改了
n久,也没发现改的有什么问题(这说明我至少没改出来bug)。几个小时后大佬说放弃了。
6. 这个是能想到的最后一个办法了,自上次改成功后,到这次改的东西,一个一个复原,定位具体问题出在哪个文件,把找到的
第一个文件复原了,然后删缓存刷新,成了!行了,接下来就是一段一段再恢复。一段恢复了,流程图ok,两段恢复了,流程
图还是ok,全恢复了,流程图……还是ok!
对比了下文件,最后修改的就是把
<meta http-equiv="X-UA-Compatible" content="IE=8,9" />
改成了:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
至于后来为什么一直出不来,好像是IE改了这个content模式之后,清缓存也是不行的,只能关掉重新打开。中间把这句改回去之后,图就再次出不来,再改正常,还是出不来,然后换了台电脑试就可以,同样的代码同样的内容,嗯,关掉IE再打开也可以了。嗯,IE这个大骗子。
改了一天半ヽ(#`Д´)ノ┌┛〃