|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)java是开放的,相同的工具就会有很多公司在做,加上java已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。比来一个项目碰到了一点点贫苦,请看成绩形貌:
在第一次页面加载时,元素A的X效果一般,点击B以后,页面部分革新,此时,回到A,元素A得到X效果.
入手下手觉得是前端我这到程序员那边呈现成绩,但细心反省以后发明没有,厥后懂得了下页面使用了ASP.NETAJAX部分革新,这就开阔爽朗了,估量是和JQUERY抵触了。
成绩重现:
1.ASP.NETAJAX在页面中增加ScriptManager和UpdatePanel
2.在UpdatePanel中增加元素A
3.用jQuery对元素A增加X效果
4.在UpdatePanel中加一个ButtonB用作postback
如许成绩就呈现了。
剖析1:
UpdatePanel在使用中次要用于部分革新,制止全部页面的Postback。UpdatePanel完成部分革新的中心在于MicrosoftAjaxWebForm.js文件,它的部分革新历程就是将页面提交到服务端(包括ViewState),实行服务端代码后异步将在UpdatePanel内的HTML举行从头出现。在此过程当中,页面的别的部分并没有形态变动。
剖析2:
jQuery能够经由过程复杂的代码对HTML元素增加各类属性和事务句柄,我们能够在这里看到官方的文档:
Tutorials:HowjQueryWorks
http://docs.jquery.com/How_jQuery_Works
在这里,我们能够得知,jQuery有个主要的事务标志“ready”,一样平常对HTML元素的效果和事务句柄都经由过程这个ready事务来增加,以下:$(document).ready(function(){
$(“p”).text(“TheDOMisnowloadedandcanbemanipulated.”);
});
官方对此的申明是:ready事务会在DOM完整加载后运转一次,OK,至此,成绩的缘故原由差未几分明了:
缘故原由:
由于在UpdatePanel部分革新以后,个中的元素A被重写,而此时全部DOM树并没有从头加载,以是jQuery的ready事务并没有触发,以是元素A就得到了原本的殊效。
办理计划:
我们能够将ready事务中实行的代码提掏出来,然后经由过程捕捉ScriptManager的EndRequest事务,在每次UpdatePanel部分革新以后实行一次jQuery初始化代码,以下所示:<scripttype=”text/javascript”>
functionslide(){
//hereiscode
}
functionload(){
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
functionEndRequestHandler(){
slide();
}
</script>
最初就是必要增加<body>
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。 |
|