遇到"不能执行已释放的 Script 的代码" 的问题和解决方法

          先说下问题产生的场景, 浏览器是IE6

          我有一个页面A,

                         A 里面有一个表单B,

                                         表单B 中的一个元素C

                                         一个iframe 页面D

         当表单B 提交的时候,D 会传递值给C,在一般情况下, 这样提交表单B 是没有问题的。

         问题的触发:因为我后面加多一个操作, 需要向D 传递一个参数, 但是只能通过D 的src 链接传送给D,

                     如果原来D 的src 是“myEditor?canshu1=aa&canshu2=bb”;                 lin49940

                    因为某个操作需要传多一个参数canshu3, 所以把D 的src 变为“myEditor?canshu1=aa&canshu2=bb&canshu3=cc”

                    这时候不会有任何错误发生, 当时只要到了表单最后提交的那一下, 就会报错误"不能执行已释放的 Script 的代码"

         问题的原因: 了解到了触发的操作, 问题应该是元素C 和 子页面D 有了引用关系,把D的src 变化后, 页面D 是会进行重新加载的,但是原来的引用关系没有解除,

                    这样导致提交的时候,无法正常释放内存。

         问题的解决:说实话,问题的解决方法, 我是没有明确的方向的,百度也没有什么有用的信息, 最后是通过各种尝试, 才终于解决了的。

                    希望能帮助大家,一起提高。

                    可以通过disabled 让页面D 的iframe 无效,这样就解除了引用关系,同时隐藏iframe D。

                    然后添加多一个iframe E 加载“myEditor?canshu1=aa&canshu2=bb&canshu3=cc”,让E 和元素C 建立引用关系,

                     D.style.disabled=true;
                     D.style.display='none';

                     E.src =“myEditor?canshu1=aa&canshu2=bb&canshu3=cc”;
                     E.style.display='';


                     实际操作的话, iframe E 可以是动态生成, 也可以是固定在页面然后进行隐藏,具体看自己业务需要了。

           

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值