浏览 9872 次
锁定老帖子 主题:执行ajax返回的script代码
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (7)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-17
最后修改:2011-05-12
晕死,自已在这里面加个表面就把页面给变了不成样子了,重发下。
问题:在使用ajax调用页面时,另一个页面中script中的ready并不执行; function getJavaScript(data) { var script, scripts; scripts = []; var regexp = /]*>([\s\S]*?)<\/script>/gi; while ((script = regexp.exec(data))) { scripts.push(script[1]); } return scripts; }
function evalJavaScript(scripts) { scripts = scripts.join('\n'); if (scripts) (window.execScript) ? window.execScript(scripts) : window.setTimeout( scripts, 0); return true; }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-05-21
这么实用的技巧,为什么没有人来顶?
赞一个,不过暂时没有时间试试。。以后测试一下 另外,估计LZ肯定很少发帖子,代码搞到一边去了 |
|
返回顶楼 | |
发表时间:2010-05-22
楼主有遇到这样的情况吗?ajax返回代码中有外部js文件的引用,请问这个怎么处理啊
|
|
返回顶楼 | |
发表时间:2010-05-22
我认为:
如果在ajax中需要临时取得script,来进行交互,可以直接构建一个script对象来获取返回,在返回中有script真实执行代码,以此来完成执行。 如: 在body的最后插入一个script对象,其中script对象有顶层直接执行代码,这些代码就可以执行了。 |
|
返回顶楼 | |
发表时间:2010-05-25
但是我试验过返回一段html代码 里面带有script 用innerHTML赋值之后那段script还是能执行的
|
|
返回顶楼 | |
发表时间:2010-05-25
lovself 写道 楼主有遇到这样的情况吗?ajax返回代码中有外部js文件的引用,请问这个怎么处理啊
你有没有发现,我的执行代码里是先用正则取出来script标签里的代码再执行的,这样的话,你那个引用外部的js是肯定没法运行了,如果是我的话,我肯定会在头文件中把所要的所有js全部分引入,反正都是引用的,这样就没你的麻烦了。 |
|
返回顶楼 | |
发表时间:2010-05-25
sixwinds 写道 但是我试验过返回一段html代码 里面带有script 用innerHTML赋值之后那段script还是能执行的
我不是说代码不能执行,而是说页面不会再次初始化加载,这样像返回中的onload之类的代码就没办自动执行了。 |
|
返回顶楼 | |
发表时间:2010-05-26
今天看到一个帖子是这样描述的:
不过现在都不建议用eval了,解析JSON,可以用这个 function jsonDecode(data){ return (new Function("return " + data))(); } 其他要想实现类似的eval的功能,一般都是在DOM中创建一个script节点,然后script.text = data; jQuery1.4中就是如此,其他好几种Javascript框架都是这么做的。 |
|
返回顶楼 | |