Ajax 执行返回的服务器端返回的js


======================================================
注:本文源代码点此下载
======================================================

服务器端:

$s='window.location.href="index.php?cmd=user.go_login"';

echo '

';

参考1:

http://www.impng.com/web-dev/execscript-loaded-by-ajax.html

事件背景

有一个公用页面需要在多个页面调用,其中涉及到部分js已经写在了公用页面中,通过ajax加载该页面后无法执行其中的js。

解决思路

1. 采用附加一个iframe的方法去执行js,为我等代码洁癖者所不齿。

2. 使用document.write输出代码,我等简洁主义者所不愿。

3. 最简单的方法是把js放到需要调用的父页面,那想这样的公用页面,每个地方调用都要写入一次,代码冗余。

4. eval是个解决方法,虽然低效。

5. 复杂的解决方法:正则匹配出加载页面中的所有js,为这些js创建同样多个标签,把js内容插入即可执行。但使用中发现,firefox可行,但ie还是不从。(师太,您就从了吧~)

解决方案

综合以上多种方式,排除不利因素,总结出一个比较实用的方法,可以满足类似这样公用页面的执行ajax加载的js的需求,在ajax加载的公用函数里面加上代码即可。主要代码如下:

// 第一步:匹配加载的页面中是否含有js

var regdetectjs = /(.|\n|\r\n)*?/ig;

var jscontained = ajaxloadeddata.match(regdetectjs);

// 第二步:如果包含js,则一段一段的取出js再加载执行

if(jscontained) {

// 分段取出js正则

var reggetjs = /((.|\n|\r\n)*)?/im;

// 按顺序分段执行js

var jsnums = jscontained.length;

for (var i=0; i

解说下:window.execscript就ie认,其他浏览器需要用eval啦。

参考2:

http://www.impng.com/web-dev/execscript-loaded-by-ajax.html

解决ajax加载的javascript不被执行的问题

关键字: ajax javascript 执行 加载

用ajax 加载的页面如果带javascript,在ie中不被执行

使用下面的方法解决

xml 代码

div style="display: none">

iframe style="display:none" οnlοad="javascript: myjavascriptfunction()">iframe>

div>


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值