日期:2014-05-16 浏览次数:20405 次
一直在用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>"的,多个?不管用,自己想办法吧:)