jquery html() append() 方法过滤javascript段的解决方法

目前在解决一个前台问题时,遇到了如下情况 :

点击前台一个按钮,会触发一个ajax请求,从后台获取一段页面代码,放置在当前页面的一个 <div> 中备用,这部分调用的是 $('#divID').html($responseHtml) 来实现的,但是在返回的代码片段中,一段javascript部分却被无情的过滤掉了......不解,但是这段javascript代码是另一个功能必须的,怎么办? 最后通过原始的方法解决了 (填充部分) :

 var  ele = document.getElementById('divID');

ele.innerHTML = $responseHtml;


从后台获取代码的ajax请求部分不用改变,填充部分用 innerHTML  即可!! 但此处需要注意,我们获取页面div部分也必须使用 document.getElementById 不能使用jquery提供的选择器方式。


##################################################

!!!!!!错误纠正!!!!!!

##################################################

经过后期的比较,上述想法是存在问题的!!!!  jquery(1.7 版本)提供的 html() 或者 append() 方法,虽然会将我们返回的html代码段中的javascript给过滤掉(表现就是通过firebug你无法找到定义的js片段),但是这些js代码是被执行过的!你在其中直接定义的js function,最后都是以对象的形式存在于 window 对象中!!这些js片段虽然不可见,但是你在后续动作中是可以直接调用的!!!但是,如果通过原生态的方法(上述的 innerHTML 方式) 将返回的 html 代码段嵌入的目标<div>中,虽然,你定义的js段是可以看见的,但是这些js不会被执行,也就是,你在其中定义的 js 函数只是以文本形式插入到当前页面中,并没有以对象的形式存放与 window 中,这些js函数,在页面后续的动作中是无法调用的!!!

综上,对于这种情况,我们还是直接使用 jquery提供的html()/append() api 即可!!!!







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值