不是我的错,也不是Atlas的!
在我的网站中菜单部分调用功能页面是在客户端脚本中完成的,菜单项被点击后,将功能的ID传递给一个专门负责菜单调用的ASPX,在这里只是生成菜单调用的Javascript脚本,然后通过AJAx的方式,调用页面中的一个方法再返回实际的URL然后用navigate方法跳转到实际的页面。之所以这样处理有几点考虑:
- 不直接显示URL和参数,虽然谈不上安全,可感觉好点儿:)
- 在服务端首先分析菜单项调用参数,改成Session变量的形式提供。
- 在等待服务器处理和跳转页面载入之前还可以显示一个等待提示,扰乱一下试听:-)
吃完午饭看了看新闻,到园子里随便看了看,看到一篇关于JavaScript装载顺序的文章〔没有记住那位兄弟的,对不住了〕,忽然灵机一动,我这脚本是用RegisterStartupScript在页面中直接运行的,是不是Atlas还没有初始化完成?!马上改为函数,然后window.setTimeout 设置延时1秒钟,运行成功了!爽啊。想想这也不像话啊,改为document.attachEvent('onload',doCmd); 再试,又报这个错了!看来不那么简单啊。没关系知道原因好办了,赶紧去Atlas.net查资料......
终于发现了Sys.Application,这是个全局的变量,只要你引用了Atlas就存在,并且有个load事件,看来就是它了,马上改:Sys.Application.load.add(doCmd); 再运行,搞定!