本人在用一SuperMap的产品IClientForJs时,遇到一个问题,描述如下:
在一个SuperMap.Layer.Vector上有270个SuperMap.Feature.Vector,
从这270个Vector里通过调用removeFeatures方法删除7、8个要素,
在IE9浏览器下执行速度很慢,大约需要3秒钟左右;
在火狐和谷歌浏览器下执行正常速度很快。
删除时的代码如下:
/** 气泡未选中事件 */
function onFeatureUnselect(feature){
if(popup != undefined){
map.removePopup(popup);
popup.destroy();
popup = undefined;
}
//如果有救援报告信息点显示,则把救援报告点移除
if(rescueRptfeatures != undefined){
/**
* 就是下面这句代码执行特别慢,vectorLayer里有270个要素,rescueRptfeatures里有大约7、8个要素,
* 从vectorLayer里移除这7、8个要素数组时,在IE9浏览器中,执行特别慢,大约2、3秒。
*/
vectorLayer.removeFeatures(rescueRptfeatures);
rescueRptfeatures = undefined;
}
if(_popup != undefined){
map.removePopup(_popup);
_popup = undefined;
}
}
向IClient的支持咨询后,支持给出的意见是把浏览器的文档模式设置成IE9标准模式。这时就需要在jsp页面里对文档模式进行设置。
百度后得知使用:<meta http-equiv="X-UA-Compatible" content="IE=9"> ,可对IE设置文档模式,可是本人在页面加上此代码后仍不起作用。
来回调整代码,删减代码进行排查测试,后来发现是因为我当前jsp页面引入了别的子jsp页面,在子jsp页面里需要加上<!DOCTYPE HTML>。
这样,默认IE的文档模式就是IE9标准模式了。即使不设置<meta http-equiv="X-UA-Compatible" content="IE=9"> 也是有效的。
总结,在jsp里设置浏览器的文档模式为IE9标准模式时,可以直接写<!DOCTYPE HTML>即可,但要求该jsp及其所有的子jsp页面都要加上<!DOCTYPE HTML>,
否则,将不起作用。