我用ajax把一个jsp页面嵌入到另一个jsp页面的DIV中,其它一切都正常,但嵌入页面的JS都失效了,我嵌入的时候用得是document.getElementById(idName).innerHTML=msg,msg是ajax返回的页面信息,请问这是为什么?有人说DIV中的js都会失效,但我测试了一下,还是有用啊。请问这个问题该如何解决?谢谢了。
请教ajax嵌入页面JS失效的问题。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- mginobili 2010-01-21 13:04关注
[quote]很多人都可能遇到过这种情况:设置 innerHTML 的时候,插入的 HTML 代码中包含脚本,但这些脚本却不生效,或者在 IE 上生效在其它浏览器上就不生效。原因很简单:不同浏览器对插入 innerHTML 中的脚本有不同的处理方法。经过实践,归纳如下:
对于IE,首先 script 标签必须带 defer 属性,其次在插入时刻,innerHTML 的所属节点必须在 DOM 树中;对于 Firefox 和 Opera,在插入时刻,innerHTML 的所属节点不可以在 DOM 树中。
根据上面结论,给出通用的设置 innerHTML 方法:
[code="js"]/*- 描述:跨浏览器的设置 innerHTML 方法
- 允许插入的 HTML 代码中包含 script 和 style
- 作者:kenxu ken@ajaxwing.com
- 日期:2006-03-23
- 参数:
- el: 合法的 DOM 树中的节点
- htmlCode: 合法的 HTML 代码
- 经测试的浏览器:ie5+, firefox1.5+, opera8.5+
/
var setInnerHTML = function (el, htmlCode) {
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('msie') >= 0 && ua.indexOf('opera') < 0) {
htmlCode = 'for IE' + htmlCode; htmlCode = htmlCode.replace(/]</em>)>/gi, '<script$1 defer="true">'); el.innerHTML = htmlCode; el.removeChild(el.firstChild); } else { var el_next = el.nextSibling; var el_parent = el.parentNode; el_parent.removeChild(el); el.innerHTML = htmlCode; if (el_next) { el_parent.insertBefore(el, el_next) } else { el_parent.appendChild(el); } } }[/code][/quote]</li> </ul>
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报无用 2
悬赏问题
- ¥15 想问一下stata17中这段代码哪里有问题呀
- ¥15 flink cdc无法实时同步mysql数据
- ¥100 有人会搭建GPT-J-6B框架吗?有偿
- ¥15 求差集那个函数有问题,有无佬可以解决
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决