I only use English to share this boke beacuse my shurufa is bed
oh 输入法又好了
今天做项目,碰到一个问题,我点一个超链接,页面成功跳转了,但是跳转后的页面里面的js代码并没有去执行。查看页面源代码,居然页面源代码还是上一个页面的。刷新一次页面,js代码成功执行了,源代码也定位到超链接的页面了
这就奇怪了,为什么页面跳转了,页面源代码怎么还是上个页面的源代码那,源代码没有跳转,这是js未执行的主要原因。只要把源代码能成功刷新到超链接的页面,那么页面的js肯定就执行了。
原因解释:
因为项目里应用了jquery mobile框架(这种框架 真的没有什么用处,但是公司真的没有人能做出好看的页面来,所以也就只能用这框架,直接用这上面的框架主题了。而且还能提高开发效率,一个页面的大体框架只要几行代码就能搞定,我就不细细评论这个框架了)。用了这个框架后,再用<a>标签,会默认这个超链接是采用ajax请求的,因为用ajax请求,当然源代码还是以前页面的源代码。
但这个地方还挺让人蛋疼的,说是用ajax请求的吧,页面还跳转到了新的页面,唯一证明他是用ajxa请求的,是因为源代码确实是以前页面的源代码,源代码并没有跳转,源代码都没有换,那肯定的里面的js也不会执行了。当然我们也不用纠结这些了。毕竟这些都是封装了框架里面的,到底当时写这个框架的人脑子里怎么想的,我们也不知道。这个问题的解决方法就是为这个超链接加一个 rel="external" 或者 data-ajax="false" 属性值,让他不要去用默认的ajax跳转 。另外我们在用<form>表单时,如果你不想用ajax请求,这个也要加上,不然也是默认的ajax请求。