DWR动态执行javascript

一直在用dwr处理页面的局部更新,在调用action返回的data中存在有javascript代码

执行时javascript代码会不起作用。

DWRUtil.setValue("showdata", data, {escapeHtml:false});

 其中showdata为DIV的ID,DATA为要放入的数据,如何处理呢?查看了下DWR的util.js文件有这个一个函数dwr.util.setValue,函数的最后一行

ele.innerHTML = val;

 这里的ele即为showdata,val即为Data,这样的javascript是不被执行的。虽然说ie中有defer属性,可以使新添加的javascript起作用,但在其它浏览器中是不行的,

如何解决呢,为了适应多浏览器,需要将val中javascript代码分离出来,动态加载到页的head区域,浏览器将会识别你加入的javascript,代码如下:

 

ele.innerHTML = val;
var reg = /<script[^>]*>([\s\S]*)<\/script>/ ; 
var match = val.match(reg);
    if (match!=null && match.length>0)
	{
    	var MyScript = match[1];
    	var script=document.createElement("script");//创建新的<script>标签
        script.text=MyScript;//给新的script标签赋值
    	document.body.appendChild(script); //在header中添加也行    
    	
	}

ok,可以了,就这样。

注意,那个正则表达式只适用于data中包含一个"<script></script>"的,多个?不管用,自己想办法吧:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值