首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

DWR动态实施javascript

2012-09-05 
DWR动态执行javascript一直在用dwr处理页面的局部更新,在调用action返回的data中存在有javascript代码执行

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>"的,多个?不管用,自己想办法吧:)

热点排行