- 在线时间
- 2175 小时
- 专家
- 2
- UID
- 222398
- 注册时间
- 2005-11-28
- 帖子
- 5803
- 精华
- 5
- 积分
- 25421
- 居住地
- 江苏省 苏州市
- 离线
- 0 天
专长: Javascript编程,PHP,ASP
- 帖子
- 5803
- 体力
- 23580
- 威望
- 367
- 居住地
- 江苏省 苏州市
|
本帖最后由 hutia 于 2012-5-9 19:49 编辑
不高兴回帖,直接新开一个主题贴。
我根据你的帖子,猜测你的问题是这样的(说实话,我觉得你之前的帖子完全没解释清楚你的问题所在):
1. 你有一个页面,这个页面中你用 ajax 异步方式获取了一段 html
2. 异步获取的 html 中有 script。你现在想要把这段 html 放到某个容器中,但是这时候你发现 script 没有被执行。
那么理清思路,解决方法就很简单:
1. 将 获取到的 html 分段,生成数组 [非脚本, 脚本, 非脚本, ........]
2. 重载 document.write 和 eval 函数 (视情况而定,也许 eval 不必重载,也许 Function 都要重载)。具体方法后文分析。
3. 遍历这个数组,遇到 非脚本,将其作为 document fragment 插入容器。遇到脚本,使用 window.execScript (IE) 或 window.eval (非 IE) 来执行
然后是细节:
1. 如何重载 document.write
记得前面让你把 html 分段了吗,在将 非脚本部分插入容器后,在其后面跟着立刻插入一个空的 document fragment
然后在你重载的 document.write 里,将收到的字符串参数直接 用 innerHTML 放入那个 document fragment 里就可以了
(ps:有些情况下,这里的处理会比较复杂,如果你还有疑问,我可以给你写个示例代码)
2. 把 html 分段后处理,就已经保证了脚本执行时的上下文正确(即脚本内容前的 html 内容已经在 dom 中存在)
========= 分割 =================
所以你看,完全没难度啊,你只需要把自己的问题理清楚,解决办法就会自己出来的 |
|