Nic*_*ick 5 javascript asp.net
我ScriptManager.RegisterStartupScript用来注册大量JS函数的调用.
ScriptManager.RegisterStartupScript(this, this.GetType(), "Script1", "SomeScript1", true);
ScriptManager.RegisterStartupScript(this, this.GetType(), "Script2", "SomeScript1", true);
ScriptManager.RegisterStartupScript(this, this.GetType(), "EndScript", "EndScript", true);
Run Code Online (Sandbox Code Playgroud)
呈现HTML时,它会按顺序添加它们.
<script type="text/javascript">
//<![CDATA[
other functions calls..
SomeScript1();SomeScript2();EndScript();
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)
但是,当我在调试模式中单步执行时,脚本的执行不按顺序EndScript执行(例如:先执行SomeScript1或执行SomeScript2)
是不是ScriptManager.RegisterStartupScript按照添加的顺序执行了?如果没有,有什么替代方案(我想总是EndScript在最后执行)
从MSDN页面RegisterStartupScript:
使用注册的启动脚本块
RegisterStartupScript不保证按照注册的顺序输出.如果启动脚本块的顺序很重要,请使用StringBuilder对象在单个字符串中收集脚本块,然后将它们全部注册为单个启动脚本.
在将它们呈现给页面之后,脚本的实际执行由浏览器处理,并且与ScriptManager控件没有任何关系.查看您发布的示例,浏览器应按照它们编写的顺序执行.您的EndScript功能是否也可以通过页面上的其他内容调用?此外,如果您正在使用任何类型的回调,那么回调完成的时间是不确定的.您能提供每个脚本中的代码示例吗?
| 归档时间: |
|
| 查看次数: |
4170 次 |
| 最近记录: |