2016-12-05 21:57
解决ajax动态加载中JavaScript方法不执行失效
最近在研究ajax的应用,在新加载的页面中,JS失效了,故此去寻找解决办法,特此分享。
具体原因是因为,ajax载入新的页面之前,js就已经加载完了,因此事件没能绑定载入到新的dom上,因此只要重新绑定下就可以了。
所以在此定义一个方法,在使用ajax获得新页面数据data的时候,把数据作为参数传入此方法中,就能重新绑定执行javascript了。
下面看代码:
function executeScript(html){ reg = /<script[^>]*>([^\x00]+)$/i; //对整段HTML片段按<\/script>拆分 htmlBlock = html.split("<\/script>"); for (i in htmlBlock){ blocks;//匹配正则表达式的内容数组,blocks[1]就是真正的一段脚本内容,因为前面reg定义我们用了括号进行了捕获分组 if (blocks = htmlBlock[i].match(reg)){ //清除可能存在的注释标记,对于注释结尾-->可以忽略处理,eval一样能正常工作 code = blocks[1].replace(/<!--/, ''); try{ eval(code) //执行脚本 } catch(e){} } } }