这几天写UI部分,由于MS的日期控件用起来比较烦,所以在网上找了个JS控件,按照作者的文档示例就在在页面上用起来了。

  按照惯例,在<head></head>中加入<script type="text/javascript" language="javascript"   src="../JS/common.js"></script>

       在Input的onclick事件中引用方法,起初在一个页面中用的效果很好,然后接着在下一个页面继续使用。当页面制作完成debug时,神奇的事情出现了,在TreeView中通过链接访问该页面,弹出提示框:“Internet Explorer无法打开站点,已终止操作”,点击“确定”,页面无法显示,直接在地址栏敲入URL,一切正常,然后就按照网上的解决方案,禁用IE上不确定的加载项;重新注册浏览器组件;最后用FF以及Opera测试,发现在这两个浏览器里面运行一切正常,FF的Javascript控制台无任何错误信息,困惑了一天,心里对IE真是从失望走向绝望!

  后来在园子里发现一个同学写得总结,觉得很有道理,就试了一下:

  (1)先在调用JS的地方加入判断:if(document.readyState=="complete"), 若为否,则setTimeout若干秒之后重新作这个操作。但是,此属性只对ie,opeara有效,ff的document没有readyState属性,永远是undefined,不过现在的客户不能只满足于IE吧,方案不可行。

  (2)试第二种方案:在script中使用defer属性。意在页面加载完毕后再执行脚本,这样可以避免找不到对象的问题。defer不会考虑外部文件是否全部下载完,只会判当前页面是否全部加载完成。只是,有defer标签的代码块里不能写document.write方法,最终在引入脚本处改为:

<script type="text/javascript" language="javascript" defer="defer" src="../JS/common.js"></script>