阿萌的程序小屋

萌物控重度患者与您一起畅游技术与梦想的世界

解决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){}
        }
    }
}

如有朋友感觉我的博文或代码有问题,愿能给予我宝贵的意见!Thanks

另注:转载请随意,但请带上本文地址,万分感谢。

http://www.wangmengyu.cn/?p=859

这就是真的真的是传说中的公告牌的说~~
暂且努力发展中~~

性别:男  年龄:20岁
现居:江苏  南京  浦口区
标语:萌即是一切